在维基百科B-tree的“搜索已排序文件的时间”部分中,它说
每个块有100条记录,最后6个左右的比较不需要进行任何磁盘读取 - 比较都在最后一个磁盘块内读取。
https://en.wikipedia.org/wiki/B-tree#Time_to_search_a_sorted_file
问题:在20个比较中,为什么最后6个左右的比较不需要任何磁盘读取?
答案 0 :(得分:2)
最后6次比较全部是针对读入存储器的最后100个记录块完成的:2 ^ 6 = 64,并且64< 100。
B-tree:每次查找都会将之前的查找空间减少一半(请参阅“分而治之”)。当域已减少到该级别时,所有数据“物理上非常接近”。在此示例中,它位于已经读入内存的单个连续100条记录块中,从而避免了额外的IO读取。
之前的(14)比较很可能必须读取不同的记录/记录块 - 不包括缓存 - 会导致IO读取。