什么是B+Tree

什么是B+Tree

序言

​ 之前面试头条,被问起数据库的索引中B+Tree的特性,一无所知。现在参考网上博客,学习一下。


基本概念

​ m阶:指的是B+树内一个节点的子节点数目的最大值不超过m。

基本特征

​ 1.有k个子树的中间节点包含k个元素,元素只用来索引,不存储数据。所有数据存放在叶子节点。

​ 2.所有的叶子节点包含了全部元素的信息,以及指向包含这些元素记录的指针,且叶子节点本身依赖关键字的大小,自小而大顺序链接。

​ 3.所有的中间节点元素都同时存在于子节点中,在子节点元素中是最大(或最小)的元素。

图例

什么是B+Tree_第1张图片

​ 这棵树上,根节点元素8是子节点2,5,8的最大元素,也是叶子节点6,8的最大元素。

补充

​ 根节点的最大元素也是整棵树的最大元素。无论插入和删除多少元素,都要保证最大元素在根节点中。

​ 由于父节点的元素都出现在叶子节点,所以叶子节点包含了全部信息。

​ 每个叶子节点都有指向下一个叶子节点的指针,形成了一个有序的链表。


卫星数据

​ 卫星数据指的是索引元素所指向的数据记录,比如数据库中的某一行。B+树中,只有叶子节点带有卫星数据,其余中间节点仅仅是索引,没有数据。

​ 在聚集索引中,叶子节点直接包含卫星数据。而在非聚集索引中,叶子节点带有指向卫星数据的指针。

什么是B+Tree_第2张图片


B+树对比B-树优点

​ 1.单一节点存储更多元素,查询的IO次数减少。

​ 2.所有查询都查找到叶子节点,查询性能稳定。

​ 3.所有叶子节点形成有序链表,便于范围查询。

参考博客

博客一

博客二

你可能感兴趣的:(数据库原理,mysql学习)