为什么InnoDB使用B+树而不是B树

  • 出于对IO性能的考虑
  • B树每个节点都存储数据,而B+树只有叶子节点才存储数据,所以在查询相同数据量的情况下,B树的IO会更频繁。因为索引本身存储在磁盘上,当数据量大时,就不能把整个索引全部加载到内存,只能逐一加载每一个磁盘页。更何况B树的索引中还保存了数据信息,导致B树的一个磁盘页保存的索引数量也比较少。即加载索引阶段还加载了许多用不到的数据。
  • 遍历效率更高:由于B+树的数据存储在叶子节点上,分支节点均为索引,方便扫库,只需要扫描一遍叶子即可,而且叶子节点形成链表,范围查询也比较方便。但B树在分支节点都保存着数据,要找到具体的顺序数据,就需要执行一次中序遍历来查询。
  • 因为B树不管叶子节点还非叶子节点,都会保存数据,这样导致了非叶子节点中能保存的指针数量就变少,指针少的情况下还要保存大量数据,就只能增加树的高度,导致IO操作变多,查询性能变低
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值