嵌套循环连接中的磁盘块读取数

时间:2016-05-29 11:29:33

标签: mysql sql join nested-loops

我正在尝试了解如何计算执行嵌套循环连接时正在读取的磁盘块数。

在我的书中,它说嵌套循环连接中的I / O数量为:

O + ⌈O/(b−2)⌉ * I

其中O是外循环中的块数,I是内循环中的块数。

这与计算执行嵌套循环连接时需要从磁盘读取的块数相同吗?

1 个答案:

答案 0 :(得分:0)

你的书可能不对。 尝试读取的次数将由类似的公式给出。我希望公式为O * I - 并且不清楚公式中b是什么。

但是,数据库有一些称为页面缓存的东西。因此,页面通常存储在内存中,实际读取的数量更像是O + I.一旦页面在内存中,它们就不需要另外的I / O.

当然,并非所有表都适合内存。在这种情况下,读取次数要高得多,取决于缓存的工作方式。

如果讨论的结论是避免嵌套循环连接,那么本书是正确的。

相关问题