数据库系统实现部分习题参考答案.doc

上传人:豆**** 文档编号:23852015 上传时间:2022-07-02 格式:DOC 页数:24 大小:338KB
返回 下载 相关 举报
数据库系统实现部分习题参考答案.doc_第1页
第1页 / 共24页
数据库系统实现部分习题参考答案.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《数据库系统实现部分习题参考答案.doc》由会员分享,可在线阅读,更多相关《数据库系统实现部分习题参考答案.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流数据库系统实现部分习题参考答案.精品文档.习题2.2.1 M egatron 777磁盘具有以下特性:1)有10个盘面,每个盘面有100000个磁道。2)磁道平均有1000个扇区,每个扇区为1024字节3)每个磁道的20%被用于间隙。4)磁盘旋转为10000转/min。5)磁头移动n个磁道所需要的时间是1+0.0002n ms。回答下列有关Megatron777的问题。a)磁盘的容量是多少?b)如果磁道是在直径3.5英寸的圆面上,那么一个磁道的扇区中的平均位密度是多少?c)最大寻道时间是多少?d)最大旋转等待时间是多少?e)如果一个块是655

2、36字节(即64扇区),一个块得传输时间是多少?f)平均寻道时间是多少?g)平均旋转等待时间是多少?参考答案:a) 磁盘容量=盘面数*磁道数*扇区数*扇区容量=10*100000*1000*1024字节=210*109字节注释:已知1)有10个盘面,每个盘面有100000个磁道。2)磁道平均有1000个扇区,每个扇区为1024字节.b) 一个磁道存放存放1000*1024*8=8192000bits.直径为3.5英尺那么中间磁道直径为3.5/2(英寸) 中间扇区所占的周长是80*3.5/2(英寸)所以,每个磁道的扇区中的平均密度是 注释:已知: 2)磁道平均有1000个扇区,每个扇区为1024

3、字节. 3)每个磁道的20%被用于间隙. c) 最大寻道时间是磁头跨越全部柱面所花费的时间。即1+0.0002*99999=20.9998ms已知: 1)有10个盘面,每个盘面有100000个磁道。 5)磁头移动n个磁道所需要的时间是1+0.0002n ms。 d) 最大旋转等待时间是磁头旋转一圈的时间。即1/(10000/60)= 6ms已知: 4)磁盘旋转为10000转/min。e) 该块占用64个扇区,为此,磁头必须越过64个扇区和扇区之间的63个间隙。由于间隙合在一起占72度圆弧,而扇区覆盖剩余288度圆弧,则被它们覆盖的圆弧的总度数为: 72*(63/1000)+288*(64/10

4、00)=22.968则传输时间是(22.968/360)*0.6ms=0.03828ms已知:3)每个磁道的20%被用于间隙。2)磁道平均有1000个扇区 。d)中最大旋转等待时间为6ms。f) 磁头行进的平均距离是跨越柱面的1/3,则平均寻道时间是:1+0.001*(100000/3)=34.33msg) 平均旋转等待时间为磁盘旋转半周所需时间: (1/2)*6ms=3msExercise 2.2.1(a)The disk has 10 * 10,000 = 100,000 tracks. The average track has 1000 * 512 = 512,000 bytes. T

5、hus,the capacity is 51.2 gigabytes.Exercise 2.2.1(c)The maximum seek time occurs when the heads have to move across all the tracks. Thus, substitute10,000 (really 9999) for n in the formula 1+.001n to get 11 milliseconds.Exercise 2.2.1(d)The maximum rotational latency is one full revolution. Since t

6、he disk rotates at 10,000 rpm, it takes1/10000 of a minute, or 1/167 of a second to rotate, or about 6 milliseconds.2.4.1计算下列位序列的奇偶校验位:a)00111011。b)00000000。c)10101101。解:定义:如果有奇数个数据盘的第j位为1,在冗余盘中,我们选取位j为1,;如果在数据盘中的第j位有偶数个1,我们选取冗余盘的位j为0。即:有奇数个1,为1;有偶数个1,为0。0 0 1 1 1 0 1 10 0 0 0 0 0 0 01 0 1 0 1 1 0 1

7、1 0 0 1 0 1 1 0习题2.4.9如果我们有例2.13的RAID6级方案,4个数据盘的块分别为00110100、11100111、01010101和10000100。a) 冗余盘的相应块是什么?b) 如果第3个盘的块被重写成01111111,必须采取哪些步骤以改变其他盘?注例2.13内容:假设块只有8位长,并且关注在我们的RAID6级示例中用到的7个磁盘的第一块。首先,假设数据盘和冗余盘的第一块的内容如图2-11所示。请注意,盘5的块是前3个盘的块模2和,第6行是行1、2、4的模2和,而最后一行是行1、3、4的模2和。磁盘内容数据块 1)111100002)101010103)010

8、101014)10000100冗余块 5)011000106)000110117)10001001图2-11 所有磁盘的第一块答案:a)前4个盘是数据盘,盘57是冗余盘.盘5的块是前3个盘的块的模2和, 盘5块是10000110;盘6是盘1,2和4的模2和, 盘6块是01010111;盘7是盘1,3,4的模2和, 盘7块是11100101。磁盘内容数据块 1)001101002)111001113)010101014)10000100冗余块 5)100001106)010101117)11100101b)如果第3个盘的块被重写成01111111,求这个序列和序列01010101(该块的旧值)的

9、模2和,则得到00101010;其中为1的位为3、5、7,所以只要对冗余块5和7的3、5、7位取反,故盘5和盘7的重写值分别为10101100、11001111。磁盘内容数据块 1)001101002)111001113)011111114)10000100冗余块 5)101011006)010101117)110011112.4.10RAID 6 方案 从磁盘崩溃中恢复使用足够多的冗余盘处理多个磁盘的崩溃,例如,基于海明码的纠错技术7个盘,其中14为数据盘,57为冗余盘。数据盘与冗余盘之间的关系由一个37矩阵描述如下:1. 盘5的位是盘1,2,3相应位的模2和。 2. 盘6的位是盘1,2,4

10、相应位的模2和。 3. 盘7的位是盘1,3,4相应位的模2和。 习题2.4.10 假设块只有8位长,采用带有7个磁盘的RAID 6级方案,描述从下列故障中恢复所要采取的步骤: a)盘1和盘4; b)盘1和盘7; c)盘2和盘5。 2.5.1假设一条记录有如下所示顺序的字段:一个长度为15的字符串,一个2字节整数,一个SQL2日期,一个SQL2时间(无小数点)。如果a)字段可在任何字节处开始;b)字段必须在4的倍数的字节处开始;c)字段必须在8的倍数的字节处开始;这条记录占用多少个字节?First, note that SQL2 dates require 10 bytes, and SQL2

11、times require 8 bytes if there is no decimal point; this material is in Section 3.1.3.a) The bytes requirsed by each of the fields is 15 + 2 + 10 + 8 = 35.b) Round each of the four field lengths up to a multiple of 4, to get 16 + 4 + 12 + 8 = 40.c) Round up again, to a multiple of 8, to get 16 + 8 +

12、 16 + 8 = 48.首先,请注意SQL2日期需要10个字节,SQL2次需要8个字节(没有小数点),点,这种材料是在3.1.3节。A)由每个字段需要的字节是15+2+10+8=35。B)每此循环的四个字段长度为4的倍数,即所有字段长度为4的倍数,得到16+ 4 +12+8=40。C)再次循环,到8的倍数,即所有字段长度为8的倍数,得到16+8+16+8= 48。2.6.5采用如习题2.6.4一样的RAID4级方案,假设数据盘1有故障。在下列情况下恢复该磁盘的块:a)盘2盘4的内容为01010110、11000000和00111011,同时冗余盘保存着11111011。b)盘2盘4的内容为1

13、1110000、11111000和00111111,同时冗余盘保存着00000001。答案:a、磁盘1的内容:0 1 0 1 0 1 1 0b、磁盘1的内容:0 0 1 1 0 1 1 02.6.7如果我们有例2.22的RAID6级方案,4个数据盘的块分别为00111100、11000111、01010101和10000100。a)冗余盘的相应块是什么?b)如果第三个盘的块被重写成10000000,必须采取哪些步骤以改变其他盘?答案:RAID6级方案,4个数据块,3个冗余块(第1对应数据块123的模2和,第2对应124的模2和,第3对应134的模2和)a数据块 1001111002110001

14、11301010101410000100冗余块 110101110201111111311101101b 原第三块01010101与重写块10000000模2和为11010101,其中为1的位为1、2、4、6、8所以只要对冗余块1、2块的1、2、4、6、8位求反得01111011,10101010习题3.1.1假定一个存储块可存放5个记录,或20个键-指针对。已知有n个记录,如果表示成n的函数,创建以下两种数据文件各需要多少个数据块:a)稠密索引;b)稀疏索引答案:解:a.稠密索引因为一个存储块存储5个记录,n个存储记录需要n/5个数据块,稠密索引需要为每个记录建立键-指针对,所以键-指针需要

15、n/20个数据库,所以表示成n的函数是n/5+n/20=n/4b.稀疏索引因为一个存储块存储5个记录,n个存储记录需要n/5个数据块,但是稀疏索引需要为每个数据块建立键-指针对,所以键-指针对需要(n/5)/20个数据块,所以表示成n的函数是n/5+(n/5)/20=21n/100习题3.1.2如果数据块中可以存放50个记录,或500个键-指针对,但是存放数据和索引的数据块都要求最多只能填满80%,重做习题3.1.1.答案:答:我们知道一个记录在存放时有数据文件和索引文件,它们分别占用存储块,由题中所述可知在索引块中我们采用了稠密索引和稀疏索引,这样两种形式。只要分别计算出这两个部分的存储块的

16、大小,再求和就能求出需要的存储块。下面分别来求: a)一个数据文件和一个稠密索引数据文件的大小容易知道,由已知给定的记录数为n,且每个存储块可存放50个记录, 数据块充满度不许超过80%。我们得到数据文件所占用的存储块大小为:n/(50*0.8); 稠密索引是指块中只存放记录的键以及指向记录本身的指针,数据文件中每个键在索引中都被表示出来,且稠密索引文件中的索引块保持键的顺序和文件中的排序顺序一致,又由已知每个存储块可存放500个键-指针对,索引块充满度不许超过80%。这样我们就能得到索引文件所占用的存储块大小为:n/(500*0.8)。 所以总的结果=数据文件所占用的存储块+索引文件所占用的

17、存储块= n/(50*0.8)+ n/(500*0.8)=(11/400)*n b)一个数据文件和一个稀疏索引同上,数据文件的大小容易知道,由已知给定的记录数为n,且每个存储块可存放50个记录, 数据块充满度不许超过80%。我们得到数据文件所占用的存储块大小为:n/(50*0.8); 稀疏索引与稠密索引不同点在于,稀疏索引在索引中只为每个数据块存放一个键。但要注意如果本题按照书中所给出的稀疏索引的比例存放记录的话,参见P92.则又由已知每个存储块可存放500个键-指针对,索引块充满度不许超过80%。这样我们就能得到索引文件所占用的存储块大小为:n/(50*500*0.8)。这样才能保证结果的正

18、确性。 所以总的结果=数据文件所占用的存储块+索引文件所占用的存储块= n/(50*0.8)+ (n/50*0.8)/500*0.8=401n/160003.2.1 假定存储块能放10个记录或者99个键和100个指针,再假定B树结点的平均充满程度为70%;即有69个键和70个指针。我们可以用B树作为几种不同结构的一部分。对下面描述的每种结构,确定:(1)1000000个记录的文件所需的总块数;(2)检索一个给定键值的记录所需的平均磁盘I/O数。可以假定最初在主存中不存在任何东西,并且查找键是记录的主键。*a)数据文件是按查找键排序的顺序文件,每块存放10个记录。B树为稠密索引。b)同a)一样,

19、但组成数据文件的记录没有特定顺序;每块存放10个记录。c)同a)一样,但B树为稀疏索引。!d)B树的叶结点中不放指向数据记录的指针,而是保存记录本身。每块可存放10个记录,但平均每个叶结点的充满度为70%,即每个叶结点存入7个记录。*e)数据文件是顺序文件,且B树是稀疏索引,但数据文件的每个基本块有一个溢出块。平均来讲,基本块是满的,而溢出块只半满。不过,记录在基本块和溢出块中没有特定的顺序。(张恩斌 2141287)习题3.2.1假定存储块能放10个记录或者99个键和100个指针,再假定B树结点的平均充满程度为70%;即有69个键和70个指针。我们可以用B树作为几种不同结构的一部分。对下面描

20、述的每种结构,确定:(1)1000000个记录的文件所需的总块数;(2)检索一个给定键值的记录所需的平均磁盘I/O数。可以假定最初在主存中不存在任何东西,并且查找键是记录的主键。a) 数据文件是按查找键排序的顺序文件,每块存放20个记录。B-树为稠密索引a(1)1000000/10=100000块。B树为稠密索引,叶结点中为数据文件的每一个记录设有一个键指针对。首先有100000数据块,如果在B树底层结点平均每块有70个指针,然后有1000000/70=14286个B树块在最底层,下一层的B树需要14286/70=205个B树块,第三层需要205/70=3块,第四层需要1个根块,所以需要100

21、000+14286+205+3+1=114495块。 (2)匹配记录有1000个,首先1000/10=100数据块,1000/70=15块,15/70=1块,第三层需要1块,第四层需要1块。所以需要100+15+1+1+1=118块。b)同a)一样,但组成数据文件的记录没有特定顺序;每块存放20个记录。b(1) 1000000/10=100000块。首先有100000数据块,如果在B树底层结点平均每块有70个指针,然后有1000000/70=14286个B树块在最底层,下一层的B树需要14286/70=205个B树块,第三层需要205/70=3块,第四层需要1个根块,所以需要100000+14

22、286+205+3+1=114495块。 (2) 匹配记录有1000个,首先1000/10=100数据块,1000/70=15块,15/70=1块,第三层需要1块,第四层需要1块。1000个记录可能分布在1000个块中,所以需要1000+15+1+1+1=1018块。c)同a)一样,但B树为稀疏索引。c(1) 1000000/10=100000块。若B树为稀疏索引,在叶结点中为数据文件的每个块设有一个键指针对。首先有100000数据块,如果在B树底层结点平均每块有70个指针,然后有100000/70=1429个B树块在最底层,下一层的B树需要1429/70=21个B树块,第三层需要21/70=

23、1块,第四层需要1个根块。所以需要100000+1429+21+1+1=101452 (2)匹配记录有1000个,1000/10=100,首先100/70=2块,2/70=1块,第三层需要1块,第四层需要1块。所以需要100+2+1+1+1=105块。d)数据文件是顺序文件,且B-树是稀疏索引,但数据文件的每个基本块有一个溢出块。平均来讲,基本块是满的,而溢出块只半满。不过,记录在基本块和溢出块中没有特定的顺序。d(1) 但数据文件的每个基本块有一个溢出块。平均来讲基本块是满的,而溢出块只是半满。所以基本快的记录为10个,溢出块记录为5个。所以有1000000/15=66667个数据块。然后有

24、66667/70=953个B树块在最低层,下一层的B树需要953/70=14个B树块,第三层需要14/70=1。因此有66667的数据块和953+14+1=968块个索引块。一共67635块。 (2)1000/15=67块,67/70=1块,第二层需要1块,第三层需要1块。因此有67个数据块和3个索引块。总共70块磁盘I/O。e)B树的叶结点中不放指向数据记录的指针,而是保存记录本身。每块可存放10个记录,但平均每个叶结点的充满度为70%,即每个叶结点存放7个记录。e(1) 1000000/7=142858块如果在B树底层结点平均每块有70个指针,然后有142858/70=2041个B树块在最

25、底层,下一层的B树需要2041/70=30个B树块,第三层需要30/70=1块,所以需要142858+2041+30+1=144930块。 (2)查询匹配的记录有1000个,就需要1000/7=143块,143/70=3块,3/70=1块,第三层需要1块。所以总共需要143+3+1+1=148块。3.2.5假设字段如3.2.1,记录有个首部,它由两个四字节的指针和一个字符组成,且我们希望在一个4096个字节的块中装入尽可能多的记录,使用的块首部由10个4字节的整数组成,对习题3.2.1中的三个情况,我们各能将多少记录装入块中参考3.2.1题答案a) ( 4096 40 ) / 35b) ( 4

26、096 40 ) / 40c) ( 4096 80 ) / 483.3.3 假若在图散列表中发生下列插入和删除,请说明将产生什么情况:1)记录g到记录j分别插入桶0到桶3。2)记录a和b记录被删除。3)记录k到n分别插入桶0到桶3。4)记录c和d被删除。答案:(题目没给出是否顺序产生这4种情况还是各自独立发生?)设4种情况独立发生1、 g直接插入到桶0中的第二个存储块;增加一个新存储块在该存储块的第一块上存储h,并链接到桶1的第一块上;i直接插入到桶2中的第二个存储块;增加一个新存储块在该存储块的第一块上存储j,并链接到桶1的第一块上;2、在桶3上删除该a记录并将剩下的记录移动到块前部以使其紧

27、凑;在桶2上直接删除该b记录习题3.7.4 利用3.7.2节的方法,编码下列位图a) 01100000010000000100b) 100000001000001001010001c) 0001000000000001000010000答案:a) 位向量有4个段(1,0,6,7),1的编码是01;0的编码是00;6的编码110110;7的编码110111。它的编码是0100110110110111b) 位向量有6个段(0,7,5,2,1,3),0的编码是00; 7的编码110111;5的编码110101;2的编码是1010;1的编码是01;3的编码是1011。它的编码是001101111101

28、011010011011c) 位向量有3个段(3,11,4),3的编码是1011;11的编码是11101011;4的编码是110100。它的编码是101111101011110100Exercise 4.2.1(a)The iterator for pi_L(R) can be described informally as follows:Open():R.Open()GetNext():Let t = R.GetNext(). If Found = False, return. Else, construct and return the tuple consistingof the el

29、ements of list L evaluated for tuple t.Close():R.Close()Exercise 4.2.1 (b)Here is the iterator for delta(R):Open():First perform R.Open(). Then, initialize a main-memory structure S that will represent a set oftuples of R seen so far. For example, a hash table could be used. Initially, set S is empt

30、y.GetNext():Repeat R.GetNext() until either Found = False or a tuple t that is not in set S is returned. Inthe later case, insert t into S and return that tuple.Close():R.Close()Exercise 4.2.1 (d)For the set union R1 union R2 we need both a set S that will store the tuples of R1 and a flag CurRelas

31、in Example 6.13. Here is a summary of the iterator:Open()Perform R1.Open() and initialize to empty the set S.GetNext()If CurRel = R1 then perform t = R1.GetNext(). If Found = True, then insert t into S andreturn t. If Found = False, then R1 is exhausted. Perform R1.Close(), R2.Open(), setCurRel = R2

32、, and repeatedly perform t = R2.GetNext() until either Found = False (inwhich case, just return), or t is not in S. In the latter case, return t.Close():Perform R2.Close()题4.3.1假设B(R)=B(S)=10000,并且M=1000.计算嵌套连接的磁盘I/O代价。因为M=1000,我们将用999个内存块来按照大小为999块的chunk对S进行缓冲,我们需要10000/999=10.01次迭代。每一次迭代中,我们用999个磁

33、盘I/O读取S的chunk,并且在外层循环中我们必须用10000个磁盘I/O来完整地读取R,总共需要用10.01*10000=100100个,加上S的10000个,总共需要磁盘I/O代价为10000+100100=110100.假设B(R)= B(S)=10000 ,并且M=1000,计算嵌套循环连接的磁盘I/O代价The formula in Section 6.4.4 gives 10000 + 10000*10000/999 or 110,101.这个公式在6.4.4 章节所给的结果是10000+10000*10000/999或者110,101编者注: 6.4.4章节公式:B(S)+Ex

34、ercise 4.3.1The formula in Section 6.4.4 gives 10000 + 10000*10000/999 or 110,101.题4.3.2 对于习题4.3.1中的关系,使用嵌套循环连接算法计算RS时我们需要什么样的M值,磁盘I/O才不超过:a)200000;!b)25000;!c)15000.a)B(S)+(B(S)*B(R)/(M-1)=528b) B(S)+(B(S)*B(R)/(M-1)=6668c)B(S)+(B(S)*B(R)/(M-1)=20001.Exercise 4.4.1 (a)An iterator for delta(R) must

35、do the first sorting pass in its Open() function. Here is a sketch:Open():Perform R.Open() and repeatedly use R.GetNext() to read memory-sized chunks of R. Sorteach into a sorted sublist and write out the list. Each of these lists may be thought of as havingits own iterator. Open each list and initi

36、alize a data structure into which the current elementof each list may be read into main memory. Use GetNext() for each list to initialize the mainmemory structure with the first element of each list. Finally, execute R.Close().GetNext():Find the least tuple t in the main-memory structure, and output

37、 one copy of it. Delete all copiesof t in main memory, using GetNext() for the appropriate sublist, until all copies of t havedisappeared, then return. If there was no such tuple t, because all the sublists were exhausted,set Found = False and return.Close():Close all the sorted sublists.Exercise 4.

38、4.2 (c)For R1 intersect R2 do the following:Open():Open R1 and R2, use their GetNext() functions to read all their tuples in main-memory-sizedchunks, and create sorted sublists, which are stored on disk. Initialize a main-memory datastructure that will hold the current tuple of each sorted sublist,

39、and use the Open() andGetNext() functions of an iterator from each sublist to initialize the structure to have the firsttuple from each sublist. Finally, close R1 and R2.GetNext():Find the least tuple t among all the first elements of the sorted sublists. If t occurs on a list fromR1 and a list from

40、 R2, then output t, remove the copies of t, use GetNext from the two sublistsinvolved to replentish the main-memory structure, and return. If t appears on only one of thesublists, do not output t. Ratherm remove it from its list, replentish that list, and repeat thesesteps with the new least t. If n

41、o t exists, because all the lists are exhausted, set Found = Falseand return.Close():Close all the sorted sublists.Exercise 6.5.3(b)The formula of Fig. 6.16 gives 5*(10000+10000) = 100,000. Note that the memory available, whichis 1000 blocks, is larger than the minimum required, which is sqrt(10000)

42、, or 100 blocks. Thus, themethod is feasible代价代价是aaaaassasdhh解:a) 消除重复需要内存大小为,所以所需的内存大小为=100个块大小b) 分组需要内存大小为,所以所需的内存大小为=100个块大小c) 并需要内存大小为,所以所需的内存大小为=200个块大小连接需要内存大小为,因为每个关系都是20000个块,所以所需内存大小为=100个块大小5.2.5针对表达式L(R(a,b,c) S(b,c,d,e) ,尽可能下推投影,其中L是: a)b+cx c+dy 。b)a,b,a+dz。We cannot push down b+c -& x,

43、 because both b and c are used in the join. Notice that if wereplaced b+c by their sum before joining, we would join tuples whose sum b+c agreed, but that had different values of b and c. What we can push down is:1. The elimination of a from R.2. The elimination of e from S.3. The replacement of c+d

44、 by y in S. Thus, the answer is:pi_b+c-x, y(pi_b,c(R) JOIN pi_b, c, c+d-y(S)因为在联接中b和c都被用到,所以我们不能推出b+c-x。注意:如果我们在连接之前用b+c的和来替换b+c,我们可以连接b和c相加所允许的元祖,但是b和c的值是不同的。我们可以推出的是:1 从R中消去a2 从S中消去e3 在S中y替换c+d因此,答案是:a)b+c-x,y(b,c(R) JOIN b,c,c+d-y(S)b)a,b,a+d-z(a,b,c(R) JOIN b,c,d(S)(林杨 2151377)5.7.1考虑一个关系R(a,b,c

45、,d),该关系有一个a上的剧簇索引以及每一个其他属性上的非聚簇索引。相关参数为:B(R)=500,T(R)=5000,V(R,a)=50,V(R,b)=1000,V(R,c)=5000,V(R,d)=500。给出最佳查询计划(索引扫描或者表扫描然后进行一个过滤器操作步骤)以及下列选择运算的每一个的磁盘I/O开销:(A)a=1ANDb=2ANDc=3(R)(B)a=1ANDb=3(R)(C)a=1ANDb=2ANDd=3(R)以第一道题为例,有以下几种方式:(1)表扫描后进行过滤,其代价是B(R),即500次的磁盘I/O,因为R是聚集的。(2)使用a的索引以及索引扫描来找出a=1的元组,然后利用

46、过滤操作来检测b=2以及c=3,由于有B(R)/V(R,a)=10个元组的a=1,并且索引是聚集的,我们大约需要10次I/O。(3)使用b的索引以及索引扫描来找出b=2的元组,然后利用过滤操作来检测a=1以及c=3,由于有T(R)/V(R,b)=5个元组的b=2,并且索引是非聚集的,我们大约需要5次I/O。(4)使用c的索引以及索引扫描来找出c=3的元组,然后利用过滤操作来检测a=1以及b=2,由于有T(R)/3=167个元组的c=3,并且索引是非聚集的,我们大约需要167次I/O。我们可以看到代价最小的计划是第三种,估计代价为5次磁盘I/O。因此,这个选择的最佳物理计划搜索b=2的元组,然后为另外两个条件进行过滤。5.7.1考虑一个关系R(a,b,c,d),该关系有一个a的聚簇索引以及对每一个其他属性的非聚簇索引。相关变元为:B(R)=1000,T(R)=5000,V(R,a)=20,V(R,b)=1000,V(R,c)=5000,V(R,d)=500.对于下列各项选择,给出最佳查询计划(索引扫描或者表扫描,然后进行一个过滤步骤)以及磁盘I/O开销a) a=1 and b=2 and d=3(R) b) a=1 and b=2 and c=3(R)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁