【发布时间】:2021-03-05 23:07:18
【问题描述】:
我正在阅读一篇关于我们为什么需要 B-Tree 的文章。它告诉我 B-Tree 可以减少 IO 的数量,而其他树,例如红黑树,不能。 IO个数等于B-Tree的高度。
这是一个例子。
我们正在寻找值9。 B-Tree 的 IO 是 3 倍,而二叉树的 IO 可能是 4 倍。
现在我很困惑。为什么B-Tree能保证最多只有3次IO?也就是说,谁能保证节点 3 和节点 7 必须位于同一个磁盘块?我认为B-Tree中每个节点的数据结构可能是一个数组,因此它们是顺序的,并且顺序数据通常位于同一个磁盘块(说真的,我不确定......),但似乎B-Tree中节点的数据结构是List,这意味着它们不是顺序的。所以据我了解,在访问3 和7 时也可以生成两次IO。在这种情况下,我们不能说访问9也可能需要4次IO吗?
【问题讨论】:
标签: data-structures binary-tree b-tree