B+树单表超过2500万行的性能影响

文章介绍了B+树在MySQL数据库中的应用,解释了索引组织表的结构,以及数据量与索引深度、查询性能的关系。当数据量超过特定阈值时,索引深度增加会导致IO查询次数增多,性能下降。通常在数据量达到千万级别时,性能问题会显现。
摘要由CSDN通过智能技术生成
(有许多人是用青春的幸福作成功的代价的。——莫扎特)

在这里插入图片描述

B+树

关于B+树的原理请查看这篇文章

分析

MySQL采用了索引组织表的形式组织数据,叶子节点存储数据,非叶子节点存储主键与页面号的映射关系。若用户的主键长度是8字节时,MySQL中页面偏移占4个字节,在非叶子节点的时候实际上是8+4=12个字节,12个字节表示一个页面的映射关系。

MySQL默认是16K的页面,抛开它的配置header,大概就是15K,因此,非叶子节点的索引页面可放151024/12=1280条数据,按照每行1K计算,每个叶子节点可以存15条数据。同理,三层就是151280*1280=24576000条数据。只有数据量达到24576000条时,深度才会增加为4,所以,索引深度没有那么容易增加,详细数据可参考下表。

索引深度最大数据量(行数)
115
219200 (15*1280)
324576000 (1512801280)
431457280000 (1512801280*1280)

结论

超出这个数据量后,随着树层数的增加,IO查询的次数也会增加,性能也会降低。但为什么都说是到2500w之后才出现呢?因为单表达到千万级数据量的业务较少,在这个阶段就会因为数据量的增多而发现性能问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值