当前位置:   article > 正文

Mysql的Innodb存储引擎为什么使用B+树,B树和B+树的区别_mysql为什么用b树和b+树的区别

mysql为什么用b树和b+树的区别

B树与B+树的区别:

B树:不管叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少(有些资料也称为扇出),指针少的情况下要保存大量数据,只能增加树的高度,导致 IO 操作变多,查询性能变低。
B+树:只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针。

B+树优势:

1.B+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”。
2.B+树查询必须查找到叶子节点,B树只要匹配到即可不用管元素位置,因此B+树查找更稳定(并不慢)。
3.对于范围查找来说,B+树只需遍历叶子节点链表即可,B树却需要重复地中序遍历
4.由于B+树在内部节点上不包含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。
5.B+树的叶子结点都是相链的,因此对整棵树的便利只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。

B树优势:

1.由于B树的每一个节点都包含key和value,因此经常访问的元素可能离根节点更近,因此访问也更迅速。

分享一个网址B树和B+树的增,删,查的直观模拟测试网址

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/442130
推荐阅读
相关标签
  

闽ICP备14008679号