此前讲红黑树时也提到了平衡二叉树,红黑树和AVL树都是能保证树不退化的平衡二叉树,平衡二叉树采用二分思想组织数据,能大大提高单点查找数据的效率,其组装过程略。
作为对比,此处也列出平衡二叉树规则
但平衡二叉树的性能和层级成反比,如果层级过多,则影响效率。因此数据库使用平衡二叉树组织数据过于低效,产生了B树。
B树即多路平衡查找树,也叫多叉树,其规则如下:
由于B树采用左小右大的原则,可以快速定位数据所在的区间,能够快速定位到单点。
除了有效减少数据的层数时,B树可以把块大小设置为4k,这样和磁盘块大小相同,可以快速将一个节点的数据全部取出,提高了性能。
相对于B树,B+树将所有元素都存储到叶子节点,非叶子节点保存的是叶子节点首条数据的引用,用于检索,因此B+树的叶子节点数=关键字数。此外,B+树的每个叶子节点,都包含着指向相邻叶子节点的指针。
B+树的插入和B树几乎一致,只是拆分时不会将元素提到叶子节点,而是将元素的引用提到叶子节点(左节点包含m/2个元素),并递归拆分。
删除时,若删除后节点元素不足,优先从兄弟节点借一个元素,并更新父节点的引用。若兄弟节点不能借出节点,则将两节点合并为同一节点,并更新父节点引用。引起父节点元素不足时,递归操作,当根节点只有一个子节点时则进行降级,引用下移并删除节点。
B+树有以下好处:
B树在B+树基础上,将非叶子节点也加上指向兄弟节点的指针,并定义非叶子节点关键字个数至少为(2/3)m,进而获取了更高的空间利用率。
原文:https://www.cnblogs.com/cielosun/p/11502909.html