【发布时间】:2015-09-10 22:36:37
【问题描述】:
我知道这是一个常见问题,我在 Stack Overflow 中看到了一些线程,但仍然无法理解。
这里是堆栈溢出的公认答案:
" 磁盘寻道成本很高。B-Tree 结构专门设计用于 尽可能避免磁盘寻道。因此 B-Tree 包含更多 键/指针指向单个节点,而不是二叉树。这个性质 使树非常平坦。通常大多数 B 树只有 3 或 4 级 深度和根节点可以很容易地缓存。这只需要2-3 试图在树中找到任何东西。叶子也是这样“打包”的, 所以迭代树(例如全扫描或范围扫描)非常有效, 因为您每个块读取数百/数千个数据行(搜索)。
同样容量的二叉树有几十层 并且顺序访问每个值至少需要一个 寻找。 "
我了解 B-Tree 的节点(顺序)比 BST 多。所以它绝对比 BST 平坦而浅。
但是这些节点再次存储为链表对吗?
我不明白他们说密钥是作为一个块读取的,从而最大限度地减少 I/O 的数量。
同样的论点不也适用于 BST 吗?除了链接将向下?
请有人给我解释一下?
【问题讨论】:
-
XFS 的磁盘结构用图表和资料记录,而不仅仅是代码:oss.sgi.com/projects/xfs/papers/xfs_filesystem_structure.pdf。它使用 B+ 树作为范围映射,以跟踪具有多个索引节点的所有范围。 B+ 树也用于其他几件事。
标签: algorithm data-structures binary-tree binary-search-tree b-tree