• B树与B+树


    【B树】

      B树(balance tree)和B+树应用在数据库索引,可以认为是m叉的多路平衡查找树。

      数据库索引是存在磁盘上的,当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘页(对应索引树的节点)。对于树来说,IO次数就是树的高度,B树的每个节点最多包含m个孩子,m称为B树的阶,m的大小取决于磁盘页的大小。

      只要树的高度低,IO少,就可以提高查询性能,这是b树的优势之一。

           B树特性:

      1.关键字集合分布在整颗树中

           2.任何一个关键字出现且只出现在一个结点中

      3.搜索有可能在非叶子结点结束

      

    【B+树】

      B+树特征:

      1.非叶子结点中的关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b树是每个关键字都保存数据)。

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

      3.所有的非叶子节点可以看成是索引部分,节点中仅含有其子树的最大(或最小关键字)

      4.通常B+树上有两个头指针,一个指向根节点,一个指向关键字最小的叶子节点

           5.同一个数字会在不同节点中重复出现,根节点的最大元素就是b+树的最大元素

     【总结】

    B+树的优点在于:
      1.由于B+树在内部节点上不包含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。
      2.B+树的叶子结点都是相链的,因此对整棵树的便利只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历,相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。

    B树的优点在于:
    由于B树的每一个节点都包含key和value,因此经常访问的元素可能离根节点更近,因此访问也更迅速。

  • 相关阅读:
    「洛谷 NOIP 计划 2021」【学习1】降维技巧
    组合数取模 合集
    浅谈并查集
    四边形不等式优化 dp (doing)
    qbxt数学五一Day4
    qbxt五一数学Day3
    qbxt五一数学Day2
    qbxt五一数学Day1
    浅谈拉格朗日插值
    10-交换排序:冒泡排序
  • 原文地址:https://www.cnblogs.com/ryjJava/p/12124113.html
Copyright © 2020-2023  润新知