面试提问mysql一张表到底能存多少数据


Posted in MySQL onMarch 13, 2022

前言

程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨

1、知识准备

1.1、数据页

在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB)。详细学习可以参考官网 我们可以用如下命令查询到。

mysql> SHOW GLOBAL STATUS LIKE 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)

今天咱们数据页的具体结构指针等不深究,知道它默认是16kb就行了,也就是说一个节点的数据大小是16kb

1.2、索引结构(innodb)

mysql的索引结构咱们应该都知道,是如下的b+树结构

面试提问mysql一张表到底能存多少数据

通常b+树非叶子节点不存储数据,只有叶子节点(最下面一层)才存储数据,那么咱们说回节点,一个节点指的是(对于上图而言)

面试提问mysql一张表到底能存多少数据

每个红框选中的部分称为一个节点,而不是说某个元素。了解了节点的概念和每个节点的大小为16kb之后,咱们计算mysql能存储多少数据就容易很多了

2、具体计算方法

2.1、根节点计算

首先咱们只看根节点

比如我们设置的数据类型是bigint,大小为8b

面试提问mysql一张表到底能存多少数据

在数据本身如今还有一小块空间,用来存储下一层索引数据页的地址,大小为6kb

面试提问mysql一张表到底能存多少数据

所以我们是可以计算出来一个数据为(8b+6b=14b)的空间(以bigint为例) 我们刚刚说到一个数据页的大小是16kb,也就是(16*1024)b,那么根节点是可以存储(16*1024/(8+6))个数据的,结果大概是1170个数据 如果跟节点的计算方法计算出来了,那么接下来的就容易了。

2.2、其余层节点计算

第二层其实比较容易,因为每个节点数据结构和跟节点一样,而且在跟节点每个元素都会延伸出来一个节点,所以第二层的数据量是1170*1170=1368900,问题在于第三层,因为innodb的叶子节点,是直接包含整条mysql数据的,如果字段非常多的话数据所占空间是不小的,我们这里以1kb计算,所以在第三层,每个节点为16kb,那么每个节点是可以放16个数据的,所以最终mysql可以存储的总数据为

1170 * 1170 * 16 = 21902400 (千万级条)

其实计算结果与我们平时的工作经验也是相符的,一般mysql一张表的数据超过了千万也是得进行分表操作了。

3、总结

最后用一张图片总结一下今天讨论的内容,希望您能喜欢

面试提问mysql一张表到底能存多少数据

以上就是面试提问mysql一张表到底能存多少数据的详细内容,更多关于mysql一张表能存多少数据的资料请关注三水点靠木其它相关文章!

MySQL 相关文章推荐
MySql学习笔记之事务隔离级别详解
May 12 MySQL
MySQL 如何分析查询性能
May 12 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
sql注入报错之注入原理实例解析
Jun 10 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 MySQL
MySQL的索引你了解吗
面试中老生常谈的MySQL问答集锦夯实基础
浅谈如何保证Mysql主从一致
MySQL数据库如何给表设置约束详解
Mar 13 #MySQL
Mysql外键约束的创建与删除的使用
Mar 03 #MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
Mar 03 #MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
You might like
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
在Python中移动目录结构的方法
2016/01/31 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python找出最小的K个数实例代码
2018/01/04 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
Python 从attribute到property详解
2020/03/05 Python
python实现代码审查自动回复消息
2021/02/01 Python
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
中科前程Java笔试题
2016/11/20 面试题
班会关于环保演讲稿
2013/12/29 职场文书
大学生求职自我评价
2014/01/16 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
统计工作个人总结
2015/03/03 职场文书
入门学习Go的基本语法
2021/07/07 Golang