我正在尝试了解如何计算执行嵌套循环连接时正在读取的磁盘块数。
在我的书中,它说嵌套循环连接中的I / O数量为:
O + ⌈O/(b−2)⌉ * I
其中O是外循环中的块数,I是内循环中的块数。
这与计算执行嵌套循环连接时需要从磁盘读取的块数相同吗?
答案 0 :(得分:0)
你的书可能不对。 尝试读取的次数将由类似的公式给出。我希望公式为O * I - 并且不清楚公式中b
是什么。
但是,数据库有一些称为页面缓存的东西。因此,页面通常存储在内存中,实际读取的数量更像是O + I.一旦页面在内存中,它们就不需要另外的I / O.
当然,并非所有表都适合内存。在这种情况下,读取次数要高得多,取决于缓存的工作方式。
如果讨论的结论是避免嵌套循环连接,那么本书是正确的。