为什么说B+树比B 树更适合实际应用中操作系统的文件索引和数据库索引?
2016-10-08 16:38
691 查看
1) B+树的磁盘读写代价更低
B+树的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。
举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针2bytes。一棵9阶B-tree(一个结点最多8个关键字)的内部结点需要2个盘快。而B+树内部结点只需要1个盘快(全部关键字都在叶结点的缘故?)。当需要把内部结点读入内存中的时候,B-树就比B+树多一次盘块查找时间(在磁盘中就是盘片旋转的时间)(B+树的内结点只有索引的作用,何来“把内部结点读入内存”...,对于B+树找到叶结点就可以,另外B+树可以顺序查找)。
2) B+树的查询效率更加稳定
由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
B+树的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。
举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针2bytes。一棵9阶B-tree(一个结点最多8个关键字)的内部结点需要2个盘快。而B+树内部结点只需要1个盘快(全部关键字都在叶结点的缘故?)。当需要把内部结点读入内存中的时候,B-树就比B+树多一次盘块查找时间(在磁盘中就是盘片旋转的时间)(B+树的内结点只有索引的作用,何来“把内部结点读入内存”...,对于B+树找到叶结点就可以,另外B+树可以顺序查找)。
2) B+树的查询效率更加稳定
由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
相关文章推荐
- 为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
- 为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
- 为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
- B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引
- 数据库为什么要用B+树结构--MySQL索引结构的实现
- 如何用B+树设计数据库中的索引文件
- B-树和B+树的应用:数据搜索和数据库索引
- B-树和B+树的应用:数据搜索和数据库索引
- B-树和B+树的应用:数据搜索和数据库索引
- B-树和B+树的应用:数据搜索和数据库索引【转】
- B-树和B+树的应用:数据搜索和数据库索引
- 数据库为什么要用B+树结构--MySQL索引结构的实现
- B-树和B+树的应用:数据搜索和数据库索引
- B-树和B+树的应用:数据搜索和数据库索引
- 【转】B-树和B+树的应用:数据搜索和数据库索引
- B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因
- B-树和B+树的应用:数据搜索和数据库索引
- B-树和B+树的应用:数据搜索和数据库索引
- 数据库为什么要用B+树结构--MySQL索引结构的实现
- B-树和B+树的应用:数据搜索和数据库索引