为什么建议MySQL在2000W条左右记录分表
创始人
2024-03-05 09:14:12
0

为什么建议MySQL在2000W条左右记录分表?这个数量问题并不是绝对的,这是一个相对的数量。在回答这个问题前我们应该先了解MySQL底层是用的什么数据结构来进行数据存储的。
MySQL底层采用的B+树进行的数据存储
在这里插入图片描述
InnoDB存储引擎最小储存单元是页,一页大小就是16k。B+树叶子存的是数据,内部节点存的是键值+指针。索引组织表通过非叶子节点的二分查找法以及指针确定数据在哪个页中,进而再去数据页中找到需要的数据.

我们假设主键ID为bigint类型,长度为8字节(int类型,一个int就是32位,4字节),而指针大小在InnoDB源码中设置为6字节,所以就是 8+6=14 字节,16k/14B =161024B/14B = 1170,2层的话既能代表11701170个地址。

我们如果一行记录的数据大小为1k,那么单个叶子节点可以存的记录数 = 16k/1k =16,所以3层的B+树存储的记录在1170117016 = 21902400,大概2千万条记录。

为什么不用4层B+树?
使用4层B+树需要磁盘IO次数增加,数据多了但是影响力了性能,这也是建议数据记录过千万条分表的原因。

这只是个理论的数值,叶子节点的数据量大小不同,3层B+数能存储的条数也不同。那么假如一条数据记录的大小不是1kb呢?还是建议,最多存满3层B+树不是1kb,会让3层B+树的最大数据记录数量发生变化比如一条数据记录5kb 那么一个数据页只能存16kb/5kb≈3条记录。此时3层B+树的最大记录数量为
total=311701170=4,106,700条,410w条记录,远小于2000w条也就是说对于复杂数据记录的单表,建议的最大存储记录要小于甚至远小于2000w条.

相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...