关系系统及其优化.ppt

上传人:小飞机 文档编号:5928602 上传时间:2023-09-05 格式:PPT 页数:32 大小:255.63KB
返回 下载 相关 举报
关系系统及其优化.ppt_第1页
第1页 / 共32页
关系系统及其优化.ppt_第2页
第2页 / 共32页
关系系统及其优化.ppt_第3页
第3页 / 共32页
关系系统及其优化.ppt_第4页
第4页 / 共32页
关系系统及其优化.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《关系系统及其优化.ppt》由会员分享,可在线阅读,更多相关《关系系统及其优化.ppt(32页珍藏版)》请在三一办公上搜索。

1、第七章:关系系统及其查询优化,关系系统的定义和分类查询处理关系系统中的查询优化,关系系统的定义,关系系统:支持关系数据模型的数据库管理系统(粗略)关系系统(确切定义):一个系统可以定义为一个关系系统,当且仅当它:支持关系数据库支持选择、投影和连接运算(自然连接),对这些运算不要求定义任何物理存取路径,关系系统的分类:,许多关系系统的产品按的思想将关系系统分为:表式系统(a)最小关系系统(b)关系完备的系统(c)全关系系统(d),S,M,I,S,M,I,S,M,I,S,M,I,a,b,c,d,S:StructureI:IntegrityM:Manipulation,关系数据模型,集合操作,关系系

2、统的查询处理:,查询处理的步骤:,query,Parser&translator,Relational algebra expression,Optimizer,Execution plan,Evaluationengine,Query output,data,Statisticsabout data,DBMS,为什么需要查询优化?,一个查询实例:求选修2号课程的学生姓名SQL表示:select Snamefrom Students,SCwhere Students.Sno=SC.Sno and Cno=2;关系代数表示:Q1=sname(Students.Sno=SC.Sno and Cno

3、=2(StudentsSC)Q2=sname(Cno=2(Students SC)Q3=sname(Students Cno=2(SC),代价计算 Q1代价计算(仅考虑I/O代价)计算广义笛卡尔积代价假定:在内存中,存放5块Students元组和一块SC元组,一块可以装10个Students元组或100个SC元组.假定:Students有1000个元组,SC有10000个元组,其中选2号课程的有50个元组数据只有读到内存才能进行连接,Q1=sname(Students.Sno=SC.Sno and Cno=2(StudentsSC),10,100,SC,Students,5块,通过读取块数计算

4、I/O代价 读取块数计算方法:Students 1000个元组 SC 10000个元组读取总块数:若每秒读写20块,则花费:,10,100,SC,Students,5块,Q1=sname(Students.Sno=SC.Sno and Cno=2(StudentsSC),Student块数,Student读入内存的次数,SC块数,条件:Students 1000个元组,SC 10000个元组迪卡尔集后后的元组个数为:103 104=107连接后的中间结果内存放不下,需暂时写到外存若每块可装10个完成迪卡尔集后的元组,则写这些元组需:(107/10)/20=5 104s选择操作:读回需5 104

5、s,假设选择后剩50个元组,均可放在内存投影操作:查询共花费:105+2 5 104 105 s 28小时,Q1=sname(Students.Sno=SC.Sno and Cno=2(StudentsSC),每秒读20块,Q2=sname(Cno=2(Students SC),Q2代价计算(仅考虑I/O代价)计算自然连接代价也要把数据读到内存进行连接,但连接结果比笛卡尔积要小得多读取块数依然为:花费为2100/20105s假设连接结果大小为104个元组,写到外存需:(104/10)/20=50s,每秒读20块,Q2=sname(Cno=2(Students SC)Q3=sname(Stude

6、nts Cno=2(SC),读取自然连接结果,执行选择运算,需50s,选择结果均可放在内存投影运算:总花费为:105+50+50=205s 3.4分钟Q3代价计算(仅考虑I/O代价)计算对SC做选择运算的代价需读SC到内存进行选择运算读SC块数为:10000/100=100花费为:100/20=5s选择结果为50个SC元组,均可放在内存,Q3=sname(Students Cno=2(SC),计算和Students自然连接的 代价需读Students到内存进行连 接运算读Students块数为:1000/10=100花费为:100/20=5s连接结果为50个元组,均可放在内存投影运算:总花费:

7、5+5=10s,10,50,SC,Students,5块,关系系统的查询优化:,关系系统的查询优化由系统完成,而不是由用户完成优化器可以从数据字典获取许多统计信息如果数据库的物理统计信息改变了,优化器可以对查询进行重新优化以选择适应的执行计划优化器可以考虑数百种不同的执行计划优化器包括了许多复杂的技术优化目标:寻求最优的执行计划,使查询执行开销尽量小,关系系统的查询优化:,查询优化的一般步骤将查询转化成内部表示-语法树根据等价变化规则,将语法树转化成优化形式选择低层操作算法生成查询计划查询执行开销主要包括:总代价=I/O代价+CPU代价多用户数据库执行开销:总代价=I/O代价+CPU代价+内存

8、代价,关系系统的查询优化:,查询优化的一般准则:下面的优化策略一般能提高查询效率,但不一定是最优的选择运算尽可能先做,降低中间结果大小在连接前,对关系适当的进行预处理:对关系排序(排序合并连接方法)或在连接属性上建索引(索引连接方法),9500495002.95003.95001.,Students,95003 1 95003 2 95004 2.95004 3.95001 1.,SC,循环嵌套连接(不做任何预处理):,.,关系系统的查询优化:,9500195002.95003.95004.,Students,95001,1 95003,1 95003,2 95004,2.95004,3.,S

9、C,排序合并连接(连接的关系分别排序):,.,索引连接(在SC的连接列Sno上建立索引):,Students,95001 9500395003 95004 95004.,SC索引,.,9500495002.95003.95001.,95003,1 95003,2 95004,2.95004,3.95001,1.,SC,关系系统的查询优化:,把投影运算和选择运算同时进行 sno(cno=2(SC)把投影和其前或后的双目运算结合起来 Cname(Course SC)把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算 Students.Sno=SC.Sno and Cno=2(Studen

10、tsSC)找出公共子表达式,sname(Students Cno=2(SC),关系系统的查询优化:,关系代数等价变换规则:给定sname(Students.Sno=SC.Sno and Cno=2(StudentsSC)如何将上述提到的运算先做,即得到:sname(Students Cno=2(SC)规则1:连接、笛卡尔积的交换律 E1 E2 E2 E1 E1 E2=E2 E1 E1 E2=E2 E1 E:关系代数表达式 F:连接条件规则2:连接、笛卡尔积的结合律(E1 E2)E3=E1(E2 E3)(E1 E2)E3 E1(E2 E3)(E1 E2)E3 E1(E2 E3),关系系统的查询优

11、化:,规则3:投影的串接定律 A1,A2,.,An(B1,B2,.,Bn(E)A1,A2,.,An(E)规则4:选择的串接定律 F1(F2(E)F1F2(E)规则5:选择和投影的交换律 F(A1,A2,.,An(E)A1,A2,.,An(F(E)特殊情况 A1,A2,.,An(F(E)A1,A2,.,An(F(A1,A2,.,An,B1,B2,.,Bm(E)规则6:选择与笛卡尔积的交换律 F(E1 E2)F(E1)E2 F仅和E1有关 F(E1 E2)F1(E1)F2(E2)F=F1F2 F(E1 E2)F2(F1(E1)E2)F1-E1 F2-E1E2,关系系统的查询优化:,规则7:选择与并

12、的交换 F(E1 E2)F(E1)F(E2)规则8:选择与差的交换 F(E1-E2)F(E1)-F(E2)规则9:投影与笛卡尔积的交换 A1,A2,.,An,B1,B2,.,Bm(E1 E2)A1,A2,.,An(E1)B1,B2,.,Bm(E2)规则10:投影与并的交换 A1,A2,.,An(E1 E2)A1,A2,.,An(E1)A1,A2,.,An(E2),关系系统的查询优化:,关系代数表达式的优化算法:应用关系代数等价变换规则来优化关系代数表达式,使优化后的表达式能遵循查询优化的一般准则,在语法树上进行优化关系代数表达式的优化算法输入:语法树 1 利用规则4把形如F1F2Fn(E)变换

13、成 F1(F2(Fn(E).)2 对每一个选择,利用规则48尽可能移到树的叶端 3 对于每个投影,利用规则3,9,10尽可能移到树 的叶端 4 利用规则35把选择和投影的串接合并成单个选择,单个投影,或一个选择后跟一个投影,关系系统的查询优化:,5 把处理后的语法树内节点分组:每一双目运算(,)和它的所有直接祖先(,)为一组,后代直到叶子全是单目运算也并入该组;若双目运算为,且其后的选择不能与它结合为等值连接时,这些单目运算单独为一组.6 生成一个程序,每组节点的计算是程序中的一步输出:计算关系代数表达式的程序,21页,关系系统的查询优化:,优化的一般步骤:因DBMS不同把查询转换成某种内部表

14、示(例如关系代数语法树)把语法树转化成标准(优化)形式选择底层的存取路径生成查询计划,选择代价最小的例子:设有供应商S,零件P和供应关系SP三个关系,其关系模式:S(Snum,Sname,City)P(Pnum,Pname,Weight,Size)SP(Snum,Pnum,Dept,Quan),关系系统的查询优化:,select Sname from S,SP,P where S.Snum=SP.Snum and SP.Pnum=P.Pnum and S.City=NANJING and P.Pname=Bolt and SP.Quan1000;原始语法树:select-投影 from-笛卡尔

15、积 where-选择,关系系统的查询优化:,Sname,c,S,SP,P,C=S.Snum=SP.Snum and SP.Pnum=P.Pnum and S.City=NANJING and P.Pname=Bolt and SP.Quan1000,Sname,c,S,SP,P,Sname,c,S,SP,P,s,sp,p,Sname,c,S,SP,P,s,sp,p,Sname,S,SP,P,s,sp,p,s,p,sp,c,c,优化:,练习1,查询要求:查询信息系学生选修的所有的课程的课程名称写出关系代数及其原始语法树,并进行优化处理,画出优化后的语法树.,SELECT Cname FROM S

16、tudents,Course,SCWHERE Students.sno=SC.sno and Co=SC.cno and Sdept=IS;,练习1:Cname(Sdept=IS(Students SCCourse),Cname,c,Students,SC,Course,原始语法树:,C:Students.sno=Sc.snoSC.cno=Co Sdept=ISC:SC.cno=Co,C1:Sdept=IS,练习2,查询要求:一图书管理数据库,其关系如下:BOOKS(Title,Author,Pname,LC_No)PUBLISHERS(Pname,Paddr,Pcity)BORROWERS(

17、Name,Addr,City,Card_No)LOANS(Card_No,LC_No,Date)要求:1.列出1999年1月1日前借出的所有书名和借书人姓名2.写出关系代数及其原始语法树,并进行优化处理,画出优化后的语法树.SELECT Title,Name from BOOKS,BORROWERS,LOANSWHERE BOOKS.LC_No=LOANS.LC_No AND BORROWERS.Card_No=LOANS.Card_No ANDDate01/01/2003,图书编号,图书证号,练习2:Title,Name(Date01/01/2003(BOOKS BORROWERSLOANS

18、),Title,Name,Date01/01/2003,BOOKS,BORROWERS,LOANS,原始语法树:,BOOKS.LC_No=LOANS.LC_No AND BORROWERS.Card_No=LOANS.Card_No,Title,Author,Pname,LC_No,Name,Addr,City,Card_No,Date,练习2:Title,Name(Date01/01/2003(BOOKS BORROWERSLOANS),Date01/01/2003(BOOKS BORROWERSLOANS)=BOOKS Date01/01/2003(BORROWERSLOANS)=BOOK

19、S BORROWERS Date01/01/2003(LOANS),练习2:Title,Name(Date01/01/2003(BOOKS BORROWERSLOANS),增加两个投影:Title,BOOKS.LC_No Name,LOANS.LC_No,练习2:Title,Name(Date01/01/2003(BOOKS BORROWERSLOANS),Title,Name,Date01/01/2003,BOOKS,BORROWERS,LOANS,BOOKS.LC_No=LOANS.LC_No,BORROWERS.Card_No=LOANS.Card_No,Title,BOOKS.LC_No,Name,LOANS.LC_No,Name,BORROWERS.CARD_No,LOANS.LC_No,LOANS.Card_No,练习2:Title,Name(Date01/01/2003(BOOKS BORROWERSLOANS),Title,Name,Date01/01/2003,BOOKS,BORROWERS,LOANS,Title,BOOKS.LC_No,Name,LOANS.LC_No,Name,BORROWERS.CARD_No,LOANS.LC_No,LOANS.Card_No,最后语法树:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号