面试提问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 08 MySQL
MySQL8.0无法启动3534的解决方法
Jun 03 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
MySQL 字符集 character
May 04 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 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 array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
vue实现评论列表功能
2019/10/25 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
怎样使用Python脚本日志功能
2016/08/14 Python
Python如何生成树形图案
2018/01/03 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
法人委托书范本
2014/04/04 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
保护环境倡议书300字
2014/05/19 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
一年级小学生评语大全
2014/12/25 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
python如何查找列表中元素的位置
2022/05/30 Python