Mysql索引B树和B+树

B树是一种平衡多路查找树,适合磁盘等存储设备,通过减少磁盘IO提高性能。B+树是B树的优化版,所有数据记录集中在叶子节点,非叶子节点只存储键值,降低树高度并增加每个节点的key数量,提供更稳定的查询效率和区间访问友好性。
摘要由CSDN通过智能技术生成

B树

B 树,平衡多路查找树。B 树是为磁盘等存储设备设计的一种平衡查找树。B 树结构的数据可以让系统高效的找到数据所在的磁盘块。

在这里插入图片描述

上图就是一个 B 树,紫色为 Key,黄色为 data,蓝色为指针。

相比于之前的 BST 多了在每一个磁盘页的索引比较,但是因为磁盘页已经被磁盘 IO 操作读取到了内存中。因为内存 IO 操作比磁盘 IO 操作省时很多根本不在一个数量级所以可以忽略不计,所以磁盘 IO 操作仍然是最重要的性能指标。

B 树相比于二叉搜索树压缩了深度,所以磁盘 IO 会比二叉搜索树少,能有效地提高新能,所以 B 树更适合索引

B+ 树

B+ 树是在 B 树的基础上的一种优化,使其更适合实现外存储索引结构。InnoDB 和 MyISAM 存储引擎都是使用 B+ 树实现其索引结构。

我们说过,B 树的索引和关键自 key-data 存储在磁盘里面,然后被磁盘 IO 操作读入内存。如果这个 data 很大的话,每次家在到内存中的 key 就会减少,这会使得 B 树的深度增加,这样还是会增加磁盘 IO 查询。

为了解决这个问题,B+ 树将所有数据记录节点按照键值的大小顺序存放在同一层叶子节点上,而非叶子节点只存储 key 值信息,这样可以大大增加每个节点存储的 key 值的数量,降低 B+ 树的高度。

非叶子节点只存储键值信息,所有叶子节点之间都有一个链指针,数据记录都存储于叶子节点中。

在这里插入图片描述

B 树与 B+ 树的区别

  • B+ 树的磁盘读写更低,因为非叶子节点可以存储更多的索引 key,而 key 索引在同一层更集中,那么会降低磁盘 IO 读写次数。
  • B+ 树的查询效率更稳定,任何查询都必须从根节点到叶子节点,路径是相似的,所以更稳定(最好最坏都在底层)。
  • 区间访问友好性,MySQL 是关系型数据库,所以经常会按照区间来访问某个索引,B+ 树的叶子节点会按照顺序建立起链状指针,增强了区间访问性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值