CH45.查询处理.作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CH45.查询处理.作业
Let relations r1(A,B,C) and r2(C,D,E) have the following properties: r1 has 20,000 tuples, r2 has 45,000 tuples, 25 tuples of r1 fit on one block, and 30 tuples of r2 fit on one block. Estimate the number of block accesses required, using each of the following join strategies for r1r2 (需考虑不同缓冲区大小,11?101?) :
Nested-loop join Block nested-loop join Merge join Hash join
解:r1需要800(20000/25)磁盘块,r2需要1500(45000/30)磁盘块。
如果内存缓冲区大小M多于800块,连接运算即使在嵌套循环连接中都能够在2300(1500+800)次磁盘访问中完成。
如果内存缓冲区大小M少于等于800块:
(a)嵌套循环连接:
如果使用r1作为外循环,需要30000800(20000×1500+800)次磁盘访问;如果使用r2作为外循环,需要36001500(45000×800+1500)次磁盘访问。
(b)块嵌套循环连接:
如果使用r1作为外循环,需要[800/(M-1)]×1500+800次磁盘访问,最坏情况M=2,需要1200800次磁盘访问;如果使用r2作为外循环,需要[1500/(M-1)]×800+1500次磁盘访问,最坏情况M=2,需要1201500次磁盘访问。
(c)归并连接:
归并排序需要先排序再归并,如果r1和r2都是未排序的,排序所需的访问次数B S 是1500×{2[log M-1(1500/M)]+2}+800×{2[log M-1(800/M)]+2},那么这个连接需要
B S+1500+800次磁盘访问。
(d)散列连接:
我们假设没有发生溢出。
因为r1相对r2小,把r1作为构造用输入关系,把r2作为查找用输入关系。
如果M大于800/M,就不需要递归分区,也就需要3(1500+800)-6900次磁盘访问,否则需要2(1500+800)[log M-1(800)-1]+1500+800次磁盘访问。
第 1 页,共 1 页。