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

B+树

时间:2020-01-05 00:33:51      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:速度   并且   显示   单链表   b树   高效   一个   size   磁盘访问   

  B+树是B树的扩展它允许有效的插入、删除和搜索操作

  在B树中,键(key)和记录(record)都可以存储在内部节点和叶节点中,而在B+树中,记录数据只能存储在叶节点上,而内部节点只能存储键值。B+树的叶节点以单链表的形式链接在一起,使得搜索变得更高效。

  B+树用于存储那些无法存放在主存储器中的大小,因此B+树的内部节点(访问记录的键)存储在主存储器中,而叶节点存储在辅助存储器中。

  B+树的内部节点通常称为索引节点。下图显示了 3 级的B+树。

技术图片

 

本文内容

  • B+树的优点
  • B树与B+树的对比
  • B+树的插入
  • B+树的删除

 

  B+树的优点:

  1. 可以在同等数量的磁盘访问中提取记录。
  2. 与B树相比,树的高度平衡并且较小。
  3. 可以依次或者直接访问B+树中存储的数据。
  4. 键都用于索引。
  5. 由于数据都存储在叶节点上,因此搜索查询速度更快。

 

  B树与B+树的对比

技术图片

  B+树的插入

  步骤 1:将新节点作为叶节点插入。

  步骤 2:如果叶节点没有剩余所需的空间,分割节点并将中间节点复制到下一个索引节点。

  步骤 3:如果索引节点没有剩余所需的空间,分割该节点并将中间元素复制到下一个索引页。

  插入例子:

  将值 195 插入下图所示的 5 阶B+树中。

技术图片

 

 

   190 将在 190 之后插入195 的右子树中。将其插入所需的位置。

技术图片

  该节点包含的元素数量大于最大容纳的元素数量,即大于 4,因此将其拆分并将中间节点放置到父元素上。

技术图片

  现在,索引节点包含 6 个子节点和 5 个键,这违反了B+树的属性,因此我们需要对其进行拆分,如下所示:

技术图片

 

 

 

  B+树的删除

  步骤 1:从叶子中删除密钥和数据。

  步骤 2:如果叶节点包含的元素数量少于最小数量,则向下合并该节点及其同级元素,并删除它们之间的键。

  步骤 3:如果索引节点包含的元素数量少于最小数量,则将该节点与同级元素合并,然后向下移动它们之间的键。

  删除例子:

  从下图所示的B+树中删除键 200。

技术图片

 

  在 195 之后,在 190 的右子树中显示 200。删除它。

技术图片

 

  通过使用 195、190、154 和 129 合并两个节点。

技术图片

 

  现在,元素 120 是节点中存在的违反B+树属性的单个元素。因此,我们需要使用 60、78、108 和 120 对其进行合并。

  现在,B+树的高度将减少 1。

技术图片

B+树

标签:速度   并且   显示   单链表   b树   高效   一个   size   磁盘访问   

原文地址:https://www.cnblogs.com/magic-sea/p/12150393.html

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