Mysql为什么使用B+Tree作为索引结构

什么是B树、什么是B+树

        B树是一种自平衡的多路搜索树数据结构,可以存储大量数据。多路树表示每一个节点可能会有许多的子节点,因此,它的整个高度会相比二叉树来说,会矮很多。

        B+ 树是 B 树的一种变种,其所有的键值对都保存在叶子节点中,并且叶子节点之间通过链表相连。这使得 B+ 树非常适合范围查询和顺序访问。

为什么MySQL默认为B+树

        对于数据库而言,所有的数据都将会保存到磁盘上,而磁盘I/O的效率又比较低,而 高度又决定了磁盘I/O的次数,磁盘I/O次数越少,对于性能的提升就越大,这也是为什么采用B树作为索引存储结构的原因。
        选择B+而不是B树的原因有以下几点:
B+B
范围查询的效率B+ 树的叶子节点通过链表相连,这使得范围查询非常高效。对于范围查询(例如查找某个区间内的记录),可以通过遍历叶子节点链表来快速找到所有符合条件的数据。这种特性在需要顺序访问数据时特别有用在 B 树中,范围查询的效率较低,因为叶子节点不连接,可能需要更多的访问和查找操作来完成范围查询
缓存

由于 B+ 树的非叶子节点中只存索引信息,非叶子节点通常较小且高度较低。所以B+ 树更适合在内存中缓存,并减少磁盘 I/O 操作。叶子节点包含了所有数据,因此在查询时,B+ 树能够更好地利用缓存,提升性能

B 树的每个节点可能包含更多的数据和子节点,这可能导致较高的树高度和较低的缓存效率
 插入和删除操作在 B+ 树中,所有的插入和删除操作主要发生在叶子节点,而非叶子节点主要用于索引。这使得插入和删除操作在 B+ 树中相对简单,并且树的平衡性较容易保持B 树的插入和删除操作可能涉及非叶子节点和叶子节点的平衡,处理起来更加复杂
支持大数据集B+ 树能够有效支持大规模数据集,因为它的叶子节点按顺序链接,可以方便地进行分页和顺序访问。对于大规模的数据集,B+ 树能够保持较低的树高度,提高数据访问的效率虽然 B 树也能处理大数据集,但在处理范围查询和顺序访问时不如 B+ 树高效
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值