在这个示例问题中,我们要考虑一个包含100万个记录点的关系(x,y),这些点随机分布在(0,0)到(1000, 1000)的矩形区域内。设定条件:每个块能够存储100个记录点的数据,B-树的一个叶结点大约含有200个键值-指针对应的记录。查询范围为450 ≤ x, y ≤ 550,已知x值和y值各自落在[450, 550]范围内的记录点数约为10万个,而x和y同时落在此范围内的记录点数约为1万个。估算过程:
-
块大小与B-树特性:每个块存储100个记录点,查询范围为1万个点。假设这些点分布均匀,需要读取的块数为 1万个 / 100 = 100 个块。
-
索引开销:由于B-树叶结点每个包含200个键值-指针,估算找到相关叶结点需要查找的I/O次数为 log200(100万个),约为 4 次。
-
总I/O估算:总的I/O次数估算为 查找4次(索引I/O) + 100次(读取块I/O),合计约为104次I/O。