关于索引的底层实现,为什么选择 B+Tree 而不是红黑树

红黑树等平衡树也可以用来实现索引,但是文件系统及数据库系统,普遍采用 B+ Tree作为索引结构 这是因为使用 B+ tree 访问磁盘数据有更高的性能

第一点

对于一个数据库来说 存储的数据量会比较多,导致索引也很大 因此需要将索引存储在磁盘,但是磁盘的 IO 操作又非常耗,所以提高索引效率的关键在于减少磁盘 IO 的次数。
举个例子 对于 31 个节点的树来说 ,一个 5 阶 B+Tree 的高度是 3 一个红黑树的最小高度是 5,树的高度基本决定了磁盘的 IO 次数 ,所以使用 B+Tree 性能要高很多

第二点

B+Tree 有个特点是相邻的数据在物理上也是相邻的,因为 B+Tree 的 node 的大小设为一个页,而一个节点上存有多个相邻的关键字和分支信息,每个节点只需要一次 IO就能完全载入,相当于一次 IO 载入了多个相邻的关键字和分支,而红黑树不具有这个特性,红黑树中大小相邻的数据,在物理结构上可能距离相差很大。由于程序的局部性原理,如果我们在索引中采用了预加载的技术,每次磁盘访问的时候除了将访问到的页加载到磁盘,我们还可以基于局部性原理加载,几页相邻的数据到内存中,而这个加载是不需要消耗多余磁盘 IO 时间的。

总结

因此 基于局部性原理,以及 B+Tree 存储结构物理上的特性,所以 B+Tree 的索引性能比红黑树要好很多。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值