B树和B+树(非常重要)

B树,又称为多路平衡查找树,B树中所有结点的孩子结点树的最大值称为B树的阶,通常用m表示

 

一棵m阶B树满足以下性质:

1 树中每个结点至多有m棵子树(至多含有m-1个关键字)

2 若根结点不是终端结点,则至少有两棵子树

3 除根结点外,所有非叶结点至少有  m/2  棵子树

 

B树和B+树的区别:

B+树和B树相比,主要的不同点在以下3项:

  • 内部节点中,关键字的个数与其子树的个数相同,不像B树种,子树的个数总比关键字个数多1个
  • 所有指向文件的关键字及其指针都在叶子节点中,不像B树,有的指向文件的关键字是在内部节点中。换句话说,B+树中,内部节点仅仅起到索引的作用,
  • 在搜索过程中,如果查询和内部节点的关键字一致,那么搜索过程不停止,而是继续向下搜索这个分支。

根据B+树的结构,我们可以发现B+树相比于B树,在文件系统,数据库系统当中,更有优势,原因如下:

  1. B+树的磁盘读写代价更低 
    B+树的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说I/O读写次数也就降低了。

  2. B+树的查询效率更加稳定 
    由于内部结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

  3. B+树更有利于对数据库的扫描 
    B树在提高了磁盘IO性能的同时并没有解决元素遍历的效率低下的问题,而B+树只需要遍历叶子节点就可以解决对全部关键字信息的扫描,所以对于数据库中频繁使用的range query,B+树有着更高的性能。

 

参考博客:

https://blog.csdn.net/guoziqing506/article/details/64122287

    原文作者:B树
    原文地址: https://blog.csdn.net/dongfengxueli/article/details/81479765
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞