码迷,mamicode.com
首页 > 其他好文 > 详细

B树和B+树

时间:2021-04-06 14:24:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:若是   设计   pad   技术   24*   等于   直接   过程   效率   

  • B树又叫B-树,B树的特性

B树中允许一个结点中包含多个key,可以是3个、4个、5个甚至更多,并不确定,需要看具体的实现。现在我们选
择一个参数M,来构造一个B树,我们可以把它称作是M阶的B树,那么该树会具有如下特点:
每个结点最多有M-1个key,并且以升序排列;
每个结点最多能有M个子结点;
根结点至少有两个子结点;

 下图是一个5阶B树,我们通过顺序插入1到17,来观察节点的分裂过程。

技术图片

 

B树的删除就复杂了许多,可分为下面几种情况:

  • 删除叶子节点中的元素 (1)搜索要删除的元素 (2)如果它在叶子节点上,直接将其删除 (3)如果删除后产生了下溢出(键数小于最小值),则向其兄弟节点借元素。即将其父节点元素下移至当前节点,将兄弟节点中元素上移至父节点(若是左节点,上移最大元素;若是右节点,上移最小元素) (4)若兄弟节点也达到下限,则合并兄弟节点与分割键。

  • 删除内部节点中的元素 (1)内部节点中元素为其左右子节点的分割值,需要从左子节点最大元素或右子节点最小元素中选出一个新的分割符。被选中的分割符从原子节点中移除,作为新的分隔值替换掉被删除的元素。(2)上一步中,若左右子节点元素数均达到下限,则合并左右子节点。(3)若删除元素后,其中节点元素数小于下限,则继续合并。

下图是一个5阶B树,我们通过删除15、14、17、5四个键,来观察删除过程(基本涵盖所有情况)。

技术图片

 B树在磁盘存储的应用

页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(1024个字节或其整数倍),预读的长度一般为页的整倍数。主存和磁盘以页为单位交换数据。当程序要读取的数据不在主存中时,会触发一个缺页异常,此时系统会向磁盘发出读盘信号,磁盘会找到数据的起始位置并向后连续读取一页或几页载入内存中,然后异常返回,程序继续运行。
文件系统的设计者利用了磁盘预读原理,将一个结点的大小设为等于一个页(1024个字节或其整数倍),这样每个结点只需要一次I/O就可以完全载入。那么3层的B树可以容纳1024*1024*1024差不多10亿个数据,如果换成二叉查找树,则需要30层!假定操作系统一次读取一个节点,并且根节点保留在内存中,那么B树在10亿个数据中查找目标值,只需要小于3次硬盘读取就可以找到目标值,但红黑树需要小于30次,因此B树大大提高了IO的操作效率。

 

B树和B+树

标签:若是   设计   pad   技术   24*   等于   直接   过程   效率   

原文地址:https://www.cnblogs.com/clarencezzh/p/14615670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!