Mysql的B树和B+树分别能存储多大的数据量

文章比较了Mysql的B-Tree和B+Tree在不同层级下的数据存储能力,指出B-Tree最多可存储约4000条数据,而B+Tree在千万级情况下能达到2000万条,强调B+树的高效索引设计减少了层数对IO的影响。
摘要由CSDN通过智能技术生成

Mysql的B树和B+树分别能存储多大的数据量

1、Mysql B-Tree (不读"B减树",而读"B杠树"或者"B树")

第一层: 16
由于数据与key和指针都存放在了各自节点中,所以16k的节点,按数据1k计算,只能存放16条数据,即16个key
第二层: 16 * 16 = 256
第三层: 16 * 16 * 16 = 4096
三层加起来: 大约4000条数据

2、Mysql B+Tree

第一层: 16 * 1000 / 16 = 1000条
16 * 1000表示节点大小默认为16k,估算1k=1000,16表示8字节key长度+8字节指针。但有资料说指针长度是6字节,加起来应该是14字节,此处仅估算按16字节
第二层: 1000 * 1000 = 100w条
第一层的一个节点中有1000条数据,那分段有多少呢,1000+1个分段,但此处估算就不+1了,每个分段有一个指针指向二层的子节点,将有1000个子节点,每个子节点的数据量与第一层的数据量一样,即1000条数据
第三层: 1000 * 1000 * 16 = 1600w条
第三层因为存放了数据,所以key的数量就没那么大了,按一条数据1k计算,大约能存16条数据(16k/1k=16条)
1000表示第二层有1000个节点,第二个1000表示第二层每个节点有1000个指针(即在第三层上有1000个子节点),第三层的每个节点有16条数据

总数据量并不是将三层的数据量加起来,因为B+树只有叶子节点存数据,即第一层和第二层没有存放数据。所以第三层的数据量就是总数据量: 1600w条数据。上线取整到2000w条数据。

3、总结

B-Tree: 4000 条, 千级
B+Tree: 2000w条,千万级
一般是3层,即Mysql通过3次IO操作就可以找到数据

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值