B+-tree:是应文件系统所需而产生的一种B-tree的变形树。
一棵m阶的B+树和m阶的B树的差异在于:
1.有n棵子树的结点中含有n个关键字; (而B 树是n棵子树有n-1个关键字)
2.所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。 (而B 树的叶子节点并没有包括全部需要查找的信息)
3.所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (而B 树的非终节点也包含需要查找的有效信息) 如图:
a) 为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
1) B+-tree的磁盘读写代价更低
B+-tree的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。
举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针2bytes。一棵9阶B-tree(一个结点最多8个关键字)的内部结点需要2个盘快。而B+ 树内部结点只需要1个盘快。当需要把内部结点读入内存中的时候,B 树就比B+ 树多一次盘块查找时间(在磁盘中就是盘片旋转的时间)。
2) B+-tree的查询效率更加稳定
由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
B+-tree的应用: VSAM(虚拟存储存取法)文件(来源论文 the ubiquitous Btree 作者:D COMER - 1979 ),如图:
B*-tree
B*-tree是B+-tree的变体,在B+ 树非根和非叶子结点再增加指向兄弟的指针;B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2)。给出了一个简单实例,如下图所示:
B+树的分裂:当一个结点满时,分配一个新的结点,并将原结点中1/2的数据复制到新结点,最后在父结点中增加新结点的指针;B+树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指针。
B*树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);如果兄弟也满了,则在原结点与兄弟结点之间增加新结点,并各复制1/3的数据到新结点,最后在父结点增加新结点的指针。
所以,B*树分配新结点的概率比B+树要低,空间使用率更高;
- 大小: 42.2 KB
- 大小: 19.5 KB
- 大小: 40.6 KB
分享到:
相关推荐
《ExcelVBA程序开发自学宝典(第2版)》是VBA入门的经典教材,对VBA的基础理论、语法规则、代码优化、编写思路、开发函数与使用数组等都进行了详尽的理论阐述和案例演示,同时还搭配窗体与控件、正则表达式、字典、...
2. 寻找一个适当的状态反馈增益矩阵K1,使得(A+BK1, b)可控。这一步的关键在于找到合适的K1,使得与b相关的子系统可以被控制。 3. 对于(A+BK1, b)这个单变量系统,我们可以直接配置其极点到期望的位置,从而实现对原...
根据提供的文件信息,“挑战程序设计竞赛(第2版)PDF”这本书主要聚焦于算法学习与程序设计竞赛训练,是算法领域的重要参考资料之一。下面将基于这些信息深入探讨书中的核心知识点。 ### 一、程序设计竞赛简介 ...
19. **办学条件**:《训练法》规定,稳定的经费来源和必备的办学资金是学校办学的基本条件,第二十条的推断正确。 20. **德育的基本任务**:德育的基本任务包括A的“培养良好的道德品质”、B的“培养正确的政治方向...
《软件工程(第4版)学习辅导与习题解析》是由张海藩和吕云翔编著,旨在配合《软件工程(第4版)》教材,帮助学生深入理解和掌握软件工程的基本概念、原则和方法。这本书是21世纪高等学校计算机规划教材之一,适合...
别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍 - **解读**:学习是一个渐进的过程,重复学习可以加深记忆,巩固理解。即使是看似简单的内容,多读几遍也能发现新的视角。 #### 23. 请看《Effective ...
### 第2章 排序与合并 #### 2.1 节 在本节中,解答了关于排序与合并的基本概念问题,特别是`Merge`函数的实现。该函数用于将两个已排序的子数组合并成一个大的有序数组。通过创建辅助数组来存储子数组,然后比较两...
第二题探讨了人与计算机计算能力的比较,强调了人类在创新、理解复杂问题和适应性上的优势。第三题讨论了编程求解问题的思路和步骤,通常包括问题定义、算法设计、编程实现和测试验证,可以结合计算机科学的算法、...
第二个活动是“相信你能行”,旨在通过具体的实际问题,如路程问题、连续自然数问题和长方形周长问题,让学生在实际操作中理解变量之间的关系,并学会如何列出等式来表达这些关系。第三个活动是“挑战自我”,学生将...
根据给定文件的信息,我们可以提炼出以下几个重要的教育理论知识点: ### 1. 美育的概念及作用 - **知识点解读**:美育是指通过艺术和美的欣赏与创造活动,培养学生的情感、美感以及审美能力的一种教育形式。 - **...
通过上述知识点的总结,我们可以看出,《数据结构与算法分析》这门课程不仅覆盖了基础的数据结构和算法理论,还提供了丰富的实例来帮助学习者理解和掌握这些核心概念。对于希望深入了解数据结构与算法的学生来说,这...
### 第二章:数据结构与算法基础 这一章是整个书籍的核心,着重讲解了数据结构的基本概念,包括抽象数据类型的定义和重要性。通过引入算法及其性能分析,读者将学习如何评估算法的时间复杂性和空间复杂性,理解算法...
期末考试主要考察学生对课程中涉及的原理和技术知识的掌握程度,特别是第二到第五章的内容。学生应该关注这些章节的主要教学内容,而不是过多地纠结于具体的实例或线路细节,而是要理解和掌握计算机组成的原理和技术...
chap2.doc涵盖了第二章,可能涉及微积分与插值理论。这部分可能包括单变量和多变量函数的数值积分(如辛普森法则、梯形法则和高斯积分),以及多项式插值和样条插值方法,如拉格朗日插值和牛顿插值。 chap3.doc...
《算法设计与分析》复习提要主要涵盖了算法分析的基础知识、设计基本方法、NP完全性理论以及相关的算法设计。以下是对这些知识点的详细说明: 1. **算法分析基础知识** - 函数比较:题目中提到的`f(n)= n10`和`g(n...
第二部分 敏捷设计 第7章 什么是敏捷设计 第8章 单一职责原则(SRP) 第9章 开放—封闭原则(OCP) 第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 ...
2. **数据结构**: 数据结构是算法的基础,书中详细讨论了数组、链表、栈、队列、堆、树(二叉树、平衡树、B树)、图等基本数据结构。特别是对树和图的操作,如树的遍历、最小生成树、最短路径算法等,都是解决复杂...
- 比如2003级试题中的第一题考查了函数的连续性,而第二题则考察了导数的计算。 #### 2. 计算题解析 - 这类题目通常要求学生通过具体的计算来解决实际问题。 - 例如2004级试题中的第四题要求找到旋转体体积最小的点...