面试提问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字符串截取函数小结
Apr 05 MySQL
MySQL sql_mode修改不生效的原因及解决
May 07 MySQL
MySQL 重写查询语句的三种策略
May 10 MySQL
MySQL 逻辑备份与恢复测试的相关总结
May 14 MySQL
MySQL大小写敏感的注意事项
May 24 MySQL
Navicat连接MySQL错误描述分析
Jun 02 MySQL
如何使用分区处理MySQL的亿级数据优化
Jun 18 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 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 clearstatcache()函数详解
2010/03/02 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jQuery知识点整理
2015/01/30 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
Python中设置变量访问权限的方法
2015/04/27 Python
Python运算符重载详解及实例代码
2017/03/07 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
MYSQL支持事务吗
2013/08/09 面试题
热能动力工程毕业生自荐信
2013/11/07 职场文书
陈欧广告词
2014/03/14 职场文书
学术诚信承诺书
2014/05/26 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
学校就业保障协议书
2019/06/24 职场文书
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang