定义
前面介绍了B树及其基本操作,B+树是B树的一个变种。与B树一样,B+树通常用于诸如数据库和磁盘文件系统等辅助存储系统,辅助存储系统一般容量大,但是数据存取速度比内存慢几个数量级。B树和B+树结构减少辅存系统访问次数,从而加快整体数据存取速度。两者有一些共同点,此外,B+树还有一些新特征:
- 有 t 个孩子的节点有 t 个关键字(B树为 t-1 个);
- 所有数据都存放在叶结点,内部节点只起索引的作用(B树内部节点也会存放数据)。在B+树中只有叶结点关键字带有卫星数据(satellite information),而B树中所有结点的关键字都带有卫星数据。所谓卫星数据就是关键字指向的实际数据记录(指针);
- 所有叶结点构成一个有序链表;
- 每一个父节点的关键字都出现在子结点中,是子结点的最大(最小)关键字。
下面是一个B+树结构:
B+树与B树比较
与B树比较,B+树右如下优势:
- 因为B+树内部结点不存放数据,所以可以存放更多的关键字,降低树高度,减少I/O次数;
- 因为B+树的所有数据都存放在叶结点,且所有叶结点形成有序链表,因此对整棵树的遍历只需要一次线性遍历叶结点即可,也便于区间查找和搜索。而B树则需要进行每一层的递归遍历。
相较于B+树,B树也有其优势:
由于B树的每一个结点都包含关键字及其卫星数据,因此经常访问的关键字可能离根结点更近(根结点通常在内存中),因此只需较少I/O次数就能访问到实际数据,更迅速。
以上就是B+树的介绍。