重新学习Mysql数据库4:Mysql索引实现原理和相关数据结构算法

BTree

一个 m 阶的B树满足以下条件:

1.每个结点至多拥有m棵子树;

2.根结点至少拥有两颗子树(存在子树的情况下),根结点至少有一个关键字;

3.除了根结点以外,其余每个分支结点至少拥有 m/2 棵子树;

4.所有的叶结点都在同一层上,B树的叶子结点可以看成是一种外部节点,不包含任何信息;

5.有 k 棵子树的分支结点则存在 k-1 个关键码,关键码按照递增次序进行排列;

6.关键字数量需要满足ceil(m/2)-1 <= n <= m-1;
在这里插入图片描述
在这里插入图片描述

插入,删除的过程

B+Tree

特点

1、B+树的层级更少:相较于B树B+每个非叶子节点存储的关键字数更多,树的层级更少所以查询数据更快;

2、B+树查询速度更稳定:B+所有关键字数据地址都存在叶子节点上,所以每次查找的次数都相同所以查询速度要比B树更稳定;

3、B+树天然具备排序功能:B+树所有的叶子节点数据构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。

4、B+树全节点遍历更快:B+树遍历整棵树只需要遍历所有的叶子节点即可,,而不需要像B树一样需要对每一层进行遍历,这有利于数据库做全表扫描。

B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点本身存有关键字其数据的地址,所以这种数据检索的时候会要比B+树快。

在这里插入图片描述
在这里插入图片描述

innoDB的B+Tree

在这里插入图片描述

参考文档:
平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了

文章

思维导图

发布了81 篇原创文章 · 获赞 19 · 访问量 3607

猜你喜欢

转载自blog.csdn.net/c22cxz/article/details/104913846