什么是B+Tree
什么是B+Tree
序言
之前面试头条,被问起数据库的索引中B+Tree的特性,一无所知。现在参考网上博客,学习一下。
基本概念
m阶:指的是B+树内一个节点的子节点数目的最大值不超过m。
基本特征
1.有k个子树的中间节点包含k个元素,元素只用来索引,不存储数据。所有数据存放在叶子节点。
2.所有的叶子节点包含了全部元素的信息,以及指向包含这些元素记录的指针,且叶子节点本身依赖关键字的大小,自小而大顺序链接。
3.所有的中间节点元素都同时存在于子节点中,在子节点元素中是最大(或最小)的元素。
图例
这棵树上,根节点元素8是子节点2,5,8的最大元素,也是叶子节点6,8的最大元素。
补充
根节点的最大元素也是整棵树的最大元素。无论插入和删除多少元素,都要保证最大元素在根节点中。
由于父节点的元素都出现在叶子节点,所以叶子节点包含了全部信息。
每个叶子节点都有指向下一个叶子节点的指针,形成了一个有序的链表。
卫星数据
卫星数据指的是索引元素所指向的数据记录,比如数据库中的某一行。B+树中,只有叶子节点带有卫星数据,其余中间节点仅仅是索引,没有数据。
在聚集索引中,叶子节点直接包含卫星数据。而在非聚集索引中,叶子节点带有指向卫星数据的指针。
B+树对比B-树优点
1.单一节点存储更多元素,查询的IO次数减少。
2.所有查询都查找到叶子节点,查询性能稳定。
3.所有叶子节点形成有序链表,便于范围查询。