【问题标题】:B+ Tree Insertion - Theoretical QuestionB+ 树插入 - 理论问题
【发布时间】:2011-05-20 16:04:01
【问题描述】:

我一直在尝试了解 B+ 树的工作原理并尝试解决示例。

在第 8 页给出的示例 1 中列出的一个此类文档中,here。它描述了 B+ 树结构,其中每个节点的 'n' 个搜索键值 - 给出为4.

直到第三步,一切都按照规则进行,但突然在第四步你看到根节点被分裂,其他分裂即将到来。我明白为什么节点 17,19,21 被拆分(这显然没有在文本中显示)。但我很惊讶为什么根被分裂了。任何人都可以向我澄清这一点,或者提出一个更好的例子,这个例子相当复杂,但采用更独特和循序渐进的方法。

【问题讨论】:

标签: database indexing theory b-tree


【解决方案1】:

这就是 B 树的工作方式:叶子节点被填充,溢出时它们分裂,向上发送 1 个键值。然后上面的节点也可以分裂,一直到根。

这个例子有点弱,通常除了根节点之外的所有节点都至少是半满的。但是 3 的一半是 1,所以这不是太明显。

【讨论】:

  • 它以 ciel(n-1/2) 的形式给出。那将是2?你能引用更好的资源吗?
  • 是的,你是对的,非叶节点的分裂将是 ceil(n/2)-1,而在前导节点它是 ciel(n-1/2)
  • 很抱歉提出这个问题,因为它很容易解决。我没有仔细阅读规则。再次感谢你,我意识到我错了。根是分裂的,因为来自等待条目 20 的子节点 (17,19,21) 的分裂,当这种分裂发生时,一个以 20 作为父节点的新节点起源,但根据 b-tree 规则所有叶子节点必须处于相同的高度。因此,您拆分根节点以容纳由密钥 20 创建的额外级别。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2012-01-18
  • 2012-04-10
  • 2016-03-02
  • 2021-08-27
  • 1970-01-01
相关资源
最近更新 更多