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

📅  最后修改于: 2021-06-29 05:30:38             🧑  作者: Mango

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

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

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

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

上述循环的费用估算:
– R和S中的b(R)和b(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

可以看出,如果外部变量的值较小,总IO较小,并且已经给出| R | <| S |。因此,关系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

这个问题的测验