千家信息网

Mysql选用B+树的原因是什么

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,Mysql选用B+树的原因是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先从数据结构的角度来答。应该知道B-树和B
千家信息网最后更新 2024年11月30日Mysql选用B+树的原因是什么

Mysql选用B+树的原因是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

先从数据结构的角度来答。

  • 应该知道B-树和B+树最重要的一个区别就是

    • B+树只有叶节点存放数据,其余节点用来索引,

    • 而B-树是每个索引节点都会有Data域。

  • 这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据

  • 从Mysql(Inoodb)的角度来看,

    • B+树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,

    • 所以为了减少内存的占用,索引也会被存储在磁盘上。

  • 那么Mysql如何衡量查询效率呢?

    • B+树所有的Data域在叶子节点,

    • 这样遍历叶子节点就能获得全部数据,这样就能进行区间访问啦。

    • 一般来说都会进行一个优化,就是将所有的叶子节点用指针串起来。

    • 说白了增加了磁盘IO次数

    • (磁盘IO一次读出的数据量大小是固定的,单个数据变大,每次读出的就少,IO次数增多,一次IO多耗时啊!),

    • 磁盘IO次数,B-树(B类树)的特定就是每层节点数目非常多,层数很少,目的就是为了就少磁盘IO次数,

    • 当查询数据的时候,最好的情况就是很快找到目标索引,然后读取数据,使用B+树就能很好的完成这个目的,

    • 但是B-树的每个节点都有data域(指针),这无疑增大了节点大小,

    • 而B+树除了叶子节点其它节点并不存储数据,节点小,磁盘IO次数就少。

    • 这是优点之一。

    • 另一个优点是什么,

    • 至于MongoDB为什么使用B-树而不是B+树,

      • 它并不是传统的关系性数据库,而是以Json格式作为存储的nosql,

      • 目的就是高性能,高可用,易扩展。

      • 首先它摆脱了关系模型,

      • 其次Mysql由于使用B+树,数据都在叶节点上,每次查询都需要访问到叶节点,

      • 而MongoDB使用B-树,所有节点都有Data域,

      • 上面所述的优点2需求就没那么强烈了,

      • 只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql(但侧面来看Mysql至少平均查询耗时差不多)。

      • 可以从它的设计角度来考虑,

    • 总体来说,Mysql选用B+树和MongoDB选用B-树还是以自己的需求来选择的。

    看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

    0