📜  门| GATE-CS-2014-(Set-2) |第 65 题

📅  最后修改于: 2021-09-26 03:27:35             🧑  作者: Mango

考虑使用嵌套循环方法在关系 r(R) 和 s(S) 之间的连接(关系代数)。有 3 个缓冲区,每个缓冲区的大小等于磁盘块大小,其中一个缓冲区保留用于中间结果。假设 size(r(R)) < size(s(S)),如果(A)关系 r(R) 在外循环中,则连接将具有较少的磁盘块访问次数。
(B)关系 s(S) 在外循环中。
(C) r(R) 和 s(S) 之间的连接选择因子大于 0.5。

(D) r(R) 和 s(S) 之间的连接选择因子小于 0.5。答案:(一)
说明:嵌套循环连接是在内存中实现数据库的方法之一。嵌套循环连接是一种使用两个嵌套循环连接两个集合的算法。

根据嵌套连接,给定关系 R 和 S

对于 R 中的每个元组 r 做
对于 S 中的每个元组 s 做
如果 r 和 s 满足连接条件
然后输出元组

上述循环的成本估算:
– b(R) 和 b(S) R 和 S 中的块数
– 外部关系的每个块被读取一次
– 对每个外部关系块读取一次内部关系

总结:IO= b(R)+n(R)*b(S) 总IO操作

让我们假设 |R|>|S|即 b(R) =10 , n(R) = 100 , n(S)= 30 和 b(s) =3
现在,如果 R 是外关系,则 IO= 10+100*3=340
如果 S 是外关系则 IO=3+30*10=303

可以观察到,如果外部变量的值较小,并且已经给出 |R|<|S|,则总 IO 较小。因此,关系 r(R) 应该在外部循环中以减少磁盘块访问次数。
参考:

  1. https://www.informatik.huberlin.de/de/forschung/gebiete/wbi/teaching/archive/sose05/dbs2/slides/09_joins.pdf
  2. https://en.wikipedia.org/wiki/Nested_loop_join

这个问题的测验