需要B树盘读取要求说明

时间:2017-12-25 04:03:25

标签: algorithm b-tree

在维基百科B-tree的“搜索已排序文件的时间”部分中,它说

  

每个块有100条记录,最后6个左右的比较不需要进行任何磁盘读取 - 比较都在最后一个磁盘块内读取。

https://en.wikipedia.org/wiki/B-tree#Time_to_search_a_sorted_file

问题:在20个比较中,为什么最后6个左右的比较不需要任何磁盘读取?

1 个答案:

答案 0 :(得分:2)

最后6次比较全部是针对读入存储器的最后100个记录块完成的:2 ^ 6 = 64,并且64< 100。

B-tree:每次查找都会将之前的查找空间减少一半(请参阅“分而治之”)。当域已减少到该级别时,所有数据“物理上非常接近”。在此示例中,它位于已经读入内存的单个连续100条记录块中,从而避免了额外的IO读取。

之前的(14)比较很可能必须读取不同的记录/记录块 - 不包括缓存 - 会导致IO读取。