C++/java数据库常见题目1_B/B+树

B树和B+树的异同

  1. 2-3树,参考博文https://www.cnblogs.com/yangecnu/p/Introduce-2-3-Search-Tree.html
  2. B树,参考博文http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html
  3. B+树,参考博文https://blog.csdn.net/qq_26222859/article/details/80631121
  • B树,每个节点都存储关键字和data,所有节点组成这棵树。

  • B+树,所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接,所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (而B 树的非叶子节点也包含需要查找的有效信息)

为什么说B+比B树更适合实际应用中操作系统的文件索引和数据库索引?

  1. 单一节点存储更多的元素,使得查询的IO次数更少。
  2. 所有查询都要查找到叶子节点,查询性能稳定。
  3. 所有叶子节点形成有序链表,便于范围查询。
  • 查询的IO次数更少的原因:
  1. B+树查询的IO次数更少的原因是B+树的非叶子结点是并没有指向关键字具体信息的指针。因此其非叶子结点的大小相对B树更小。查询相同数量的关键字,B+树只需要读取对应的指针即可而不是读取关键字的具体信息。相对来说IO读写次数也就降低了。
  • 查询性能稳定的原因:
  1. B+树的查询效率更加稳定的原因是由于非叶子结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

 

本系列文章目的为个人准备面试的简单总结,文中多有不足,敬请批评指正!

参考:

https://www.cnblogs.com/yangecnu/p/Introduce-2-3-Search-Tree.html

https://blog.csdn.net/qq_26222859/article/details/80631121

你可能感兴趣的:(数据库基础)