面试提问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 8.0.24 安装配置方法图文教程
May 12 MySQL
新手入门Mysql--sql执行过程
Jun 20 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
进阶篇之linux环境下安装MySQL数据库
Apr 09 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
Apr 10 MySQL
MySQL库表太大怎么办? 数据库分库分表项目实践
Apr 11 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
mysql查看表结构的三种方法总结
Jul 07 MySQL
MySQL的索引你了解吗
面试中老生常谈的MySQL问答集锦夯实基础
浅谈如何保证Mysql主从一致
MySQL数据库如何给表设置约束详解
Mar 13 #MySQL
Mysql外键约束的创建与删除的使用
Mar 03 #MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
Mar 03 #MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
You might like
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
医学院学生求职简历的自我评价
2013/10/24 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
赔偿协议书范本
2014/04/15 职场文书
协议书格式
2014/04/23 职场文书
争做文明公民倡议书
2014/08/29 职场文书
如何写股份合作协议书
2014/09/11 职场文书
师德师风剖析材料
2014/09/30 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
Python 阶乘详解
2021/10/05 Python