




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章关系查询处理和其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化第九章关系查询处理和其查询优化9.1关系数据库系统的查询19.1关系数据库系统的查询处理9.1.1查询处理步骤分4个阶段:查询分析,查询检查,查询优化,查询执行9.1关系数据库系统的查询处理9.1.1查询处理步骤21查询分析对查询语句进行扫描、词法分析和语法分析。2查询检查根据数据字典对合法的查询语句进行语义检查,即检查语句中的数据库对象,如属性名、关系名,是否存在和是否有效。权限和完整性检查,转换为查询树1查询分析33查询优化在许多的执行策略中选择一个高效的查询处理策略。分为代数优化和物力优化。4查询执行生成查询计划,由代码生成器生成执行查询的代码。3查询优化4查询语句词法分析语法分析语义分析符号名转换安全性检查完整性检查查询树代数优化物理优化等执行策略描述代码生成查询计划的执行代码查询分析查询检查查询优化查询执行查询语句词法分析安全性检查查询树代数优化执行策略描述代码生成59.1.2实现查询操作的算法示例一、选择操作的实现例select*fromstudentwhere<条件表达式>;条件为:C1:无条件 C2:sno=‘200215121’C3:sage>20C4:sdept=‘CS’ANDsage>20;9.1.2实现查询操作的算法示例61.简单的全表扫描对小表简单有效,对大表费时,效率低snoSnameSsexSagesdept20021513220021512220021512120021525…….1.简单的全表扫描snoSnameSsexSagesdept72.索引扫描方法如果选择条件中的属性上有索引,用索引扫描法。通过索引先找到满足条件的元组主码或指针,再通过指针找基表中的数据2.索引扫描方法8snoSnameSsexSagesdept20021513220021512220021512120021525…….索引地址200215121200215122200215125200215132……snoSnameSsexSagesdept2002151329二、连接操作的实现连接操作是最费时的操作例: select* fromstudent,sc wherestudent.sno=sc.sno二、连接操作的实现101.嵌套循环方法Snosname5837……snocno757838……1.嵌套循环方法Snosname5837……snocno75112.排序-合并方法适合于连接的诸表已经排序的情况步骤:1)先对待连接的表在连接属性上排序2)取左表的第一个元组,一次扫描右表,找连接属性相等的元组,把他们连接起来3)当在右表中找到第一个与左表提供的值不相等时,返回左表取下一个元组再往下扫描右表。重复这一过程,直到左表扫描完毕。2.排序-合并方法12Snosname5837……snocno757838……sno357788…sno3578…Snosname5837……snocno757838……sn133.索引连接方法步骤:1)在sc表上建立属性sno的索引2)对student中的每一个sno,通过sc的索引找相应的sc元组3)把这些元组与student中的当前元组连接起来4)重复2)3)直到student表处理完毕3.索引连接方法149.2关系系统的查询优化9.2.1查询优化概述9.2关系系统的查询优化9.2.1查询优化概述159.2.1查询优化概述查询优化的必要性查询优化极大地影响RDBMS的性能。
查询优化的可能性关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。9.2.1查询优化概述查询优化的必要性16由DBMS进行查询优化的好处用户不必考虑如何最好地表达查询以获得较好的效率系统可以比用户程序的优化做得更好(1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息
由DBMS进行查询优化的好处用户不必考虑如何最好地表达查询以17由DBMS进行查询优化的好处(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。(3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术由DBMS进行查询优化的好处(2)如果数据库的物理统计信息改18查询优化目标查询优化的总目标选择有效策略,求得给定关系表达式的值实际系统的查询优化步骤1.将查询转换成某种内部表示,通常是语法树2.根据一定的等价变换规则把语法树转换成标准(优化)形式查询优化目标查询优化的总目标19实际系统的查询优化步骤3.选择低层的操作算法对于语法树中的每一个操作计算各种执行算法的执行代价选择代价小的执行算法4.生成查询计划(查询执行方案)查询计划是由一系列内部操作组成的。实际系统的查询优化步骤3.选择低层的操作算法20
代价模型
集中式数据库单用户系统
总代价=I/O代价+CPU代价多用户系统
总代价=I/O代价+CPU代价+内存代价分布式数据库 总代价=I/O代价+CPU代价[+内存代价]+通信代价
代价模型
集中式数据库219.2.2一个实例例:求选修了课程C2的学生姓名
SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';9.2.2一个实例例:求选修了课程C2的学生姓名22假设1:外存: Student:1000条,SC:10000条,选修2号课程:50条假设2:一个内存块装元组:10个Student,或100个SC, 内存中一次可以存放:5块Student元组,1块SC元组和若干块连接结果元组假设3:读写速度:20块/秒假设4:连接方法:基于数据块的嵌套循环法
假设1:外存:233种执行策略Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))
Q2=ПSname(бSC.Cno='2'(StudentSC))Q3=ПSname(StudentбSC.Cno='2'(SC))
3种执行策略Q1=ПSname(бStudent.Sn24执行策略1Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))
①Student×SC读取总块数=读Student表块数+读SC表遍数*每遍块数
=1000/10+(1000/(10×5))×(10000/100)=100+20×100=2100
读数据时间=2100/20=105秒执行策略1Q1=ПSname(бStudent.Sno=SC25不同的执行策略,考虑I/O时间
中间结果大小=1000*10000=107(1千万条元组)
写中间结果时间=10000000/10/20=50000秒
②б
读数据时间=50000秒
③П总时间=105+50000+50000秒=100105秒=27.8小时不同的执行策略,考虑I/O时间
中间结果大小=1000262.Q2=ПSname(бSC.Cno='2'(StudentSC))
① 读取总块数=2100块 读数据时间=2100/20=105秒 中间结果大小=10000(减少1000倍) 写中间结果时间=10000/10/20=50秒
②б
读数据时间=50秒
③П
总时间=105+50+50秒=205秒=3.4分
2.Q2=ПSname(бSC.Cno='2'(St273.Q3=ПSname(StudentбSC.Cno='2'(SC))
①б 读SC表总块数=10000/100=100块
读数据时间=100/20=5秒
中间结果大小=50条不必写入外存
② 读Student表总块数=1000/10=100块
读数据时间=100/20=5秒
③П
总时间=5+5秒=10秒3.Q3=ПSname(StudentбS284.Q3=ПSname(StudentбSC.Cno='2'(SC))假设SC表在Cno上有索引,Student表在Sno上有索引
①б 读SC表索引 读SC表总块数=50/100<1块 读数据时间
中间结果大小=50条不必写入外存4.Q3=ПSname(StudentбSC.29② 读Student表索引 读Student表总块数=50/10=5块 读数据时间③П总时间<10秒②309.3代数优化关系代数表达式等价指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的上面的优化策略大部分都涉及到代数表达式的变换9.3代数优化关系代数表达式等价31
9.3.1常用的等价变换规则
设E1、E2等是关系代数表达式,F是条件表达式
l.连接、笛卡尔积交换律 E1×E2≡E2×E1 E1E2≡E2E1 E1FE2≡E2FE1
9.3.1常用的等价变换规则
32关系代数等价变换规则(续)
2.连接、笛卡尔积的结合律(E1×E2)×E3≡E1×(E2×E3)(E1E2)E3≡E1(E2E3)(E1E2)E3≡E1(E2E3)
F
F
F
F
关系代数等价变换规则(续)
33关系代数等价变换规则(续)3.投影的串接定律
π
A1,A2,
,An(π
B1,B2,
,Bm(E))≡π
A1,A2,
,An(E)假设:1) E是关系代数表达式2) Ai(i=1,2,…,n),Bj(j=l,2,…,m)是属性名3){A1,A2,…,An}构成{Bl,B2,…,Bm}的子集关系代数等价变换规则(续)3.投影的串接定律34关系代数等价变换规则(续)4.选择的串接定律
бF1(б
F2(E))≡бF1∧F2(E)选择的串接律说明选择条件可以合并这样一次就可检查全部条件。关系代数等价变换规则(续)4.选择的串接定律35关系代数等价变换规则(续)5.选择与投影的交换律(1)假设:选择条件F只涉及属性A1,…,AnбF(πA1,A2,
,An(E))≡πA1,A2,
,An(бF(E))
(2)假设:F中有不属于A1,…,An的属性B1,…,Bmπ
A1,A2,
,An
(
бF
(E))≡
πA1,A2,
,An(бF
(πA1,A2,
,An,B1,B2,
,Bm(E)))关系代数等价变换规则(续)5.选择与投影的交换律36关系代数等价变换规则(续)6.选择与笛卡尔积的交换律(1)假设:F中涉及的属性都是E1中的属性 бF(E1×E2)≡бF(E1)×E2
(2)假设:F=F1∧F2,并且F1只涉及E1中的属性,
F2只涉及E2中的属性 则由上面的等价变换规则1,4,6可推出: бF(E1×E2)≡бF1(E1)×бF2(E2)
关系代数等价变换规则(续)6.选择与笛卡尔积的交换律37关系代数等价变换规则(续)(3)假设:F=F1∧F2,
F1只涉及E1中的属性,F2涉及E1和E2两者的属性 бF(E1×E2)≡бF2(бF1(E1)×E2)
它使部分选择在笛卡尔积前先做
关系代数等价变换规则(续)(3)假设:F=F1∧F2,38关系代数等价变换规则(续)7.选择与并的交换 假设:E=E1∪E2,E1,E2有相同的属性名 бF(E1∪E2)≡бF(E1)∪бF(E2)
8.选择与差运算的交换 假设:E1与E2有相同的属性名 бF(E1-E2)≡бF(E1)-бF(E2)关系代数等价变换规则(续)7.选择与并的交换399.选择对自然连接的分配律бF(E1E2)≡бF(E1)бF(E2)
F只涉及E1与E2的公共属性9.选择对自然连接的分配律40关系代数等价变换规则(续)10.投影与笛卡尔积的交换
假设:E1和E2是两个关系表达式,
A1,…,An是E1的属性,
B1,…,Bm是E2的属性πA1,A2,…,An,B1,B2,…,Bm(E1×E2)≡ πA1,A2,…,An(E1)×πB1,B2,…,Bm(E2)关系代数等价变换规则(续)10.投影与笛卡尔积的交换41关系代数等价变换规则(续)l1.投影与并的交换
假设:E1和E2有相同的属性名 πA1,A2,…,An(E1∪E2)≡ πA1,A2,…,An(E1)∪πA1,A2,…,An(E2)关系代数等价变换规则(续)l1.投影与并的交换42小结1-2:连接、笛卡尔积的交换律、结合律3:合并或分解投影运算4:合并或分解选择运算5-9:选择运算与其他运算交换5,10,11:投影运算与其他运算交换小结1-2:连接、笛卡尔积的交换律、结合律439.3.2查询树的启发式优化选择运算应尽可能先做
目的:减小中间关系在执行连接操作前对关系适当进行预处理按连接属性排序在连接属性上建立索引
投影运算和选择运算同时做目的:避免重复扫描关系将投影运算与其前面或后面的双目运算结合目的:减少扫描关系的遍数9.3.2查询树的启发式优化选择运算应尽可能先做44查询优化的一般准则(续)某些选择运算+在其前面执行的笛卡尔积===>连接运算例:бStudent.Sno=SC.Sno(Student×SC)
StudentSC提取公共子表达式查询优化的一般准则(续)某些选择运算+在其前面执行的笛卡尔45关系代数表达式的优化算法
算法:关系表达式的优化输入:一个关系表达式的语法树。输出:计算该表达式的程序。方法:(1)分解选择运算利用规则4把形如бF1∧F2∧…∧Fn(E)变换为бF1(бF2(…(бFn(E))…))关系代数表达式的优化算法算法:关系表达式的优化46关系代数表达式的优化算法(续)(2)通过交换选择运算,将其尽可能移到叶端对每一个选择,利用规则4~9尽可能把它移到树的叶端。
(3)通过交换投影运算,将其尽可能移到叶端
对每一个投影利用规则3,10,l1,5中的一般形式尽可能把它移向树的叶端。
关系代数表达式的优化算法(续)(2)通过交换选择运算,将其47关系代数表达式的优化算法(续)(4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成利用规则3~5把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时执行,或在一次扫描中全部完成尽管这种变换似乎违背“投影尽可能早做”的原则,但这样做效率更高。
关系代数表达式的优化算法(续)(4)合并串接的选择和投影,48关系代数表达式的优化算法(续)(5)对内结点分组把上述得到的语法树的内节点分组。每一双目运算(×,,∪,-)和它所有的直接祖先为一组(这些直接祖先是б,π运算)。如果其后代直到叶子全是单目运算,则也将它们并入该组,但当双目运算是笛卡尔积(×),而且其后的选择不能与它结合为等值连接时除外。把这些单目运算单独分为一组。
关系代数表达式的优化算法(续)(5)对内结点分组49关系代数表达式的优化算法(续)(6)生成程序生成一个程序,每组结点的计算是程序中的一步。各步的顺序是任意的,只要保证任何一组的计算不会在它的后代组之前计算。
关系代数表达式的优化算法(续)(6)生成程序50优化的一般步骤1.把查询转换成某种内部表示2.代数优化:把语法树转换成标准(优化)形式3.物理优化:选择低层的存取路径4.生成查询计划,选择代价最小的优化的一般步骤1.把查询转换成某种内部表示51优化的一般步骤(续)(1)把查询转换成某种内部表示例:求选修了课程C2的学生姓名 SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';优化的一般步骤(续)(1)把查询转换成某种内部表示52(1)把查询转换成某种内部表示语法树结果project(Sname)
select(SC.Cno=
2
)
join(Student.Sno=SC.Sno)
StudentSC(1)把查询转换成某种内部表示语法树结果project(S53关系代数语法树πSname
SC.Cno=’2’
Student.Sno=SC.S
×
StudentSC关系代数语法树πSnameSC.Cno=’2’Stu54(2)代数优化利用优化算法把语法树转换成标准(优化)形式
πSname
Student.Sno=SC.Sno
SC.Cno=
2
×
StudentSC(2)代数优化利用优化算法把语法树转换成标准(优化)形式πS55例:对于如下数据库:
S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER)现有一个查询语句:查询至少学习LIU老师所授一门课程的女学生学号和姓名。该查询语句的关系代数表达式为:ΠS#,SNAME(σTEACHER=‘LIU’
SEX=‘F’(SSCC))例:对于如下数据库:ΠS#,SNAME(σTEACHER=‘56自然联接的计算过程如下:计算R×S;--计算笛卡尔积设R和S的公共属性是A1,A2…Ak,挑选R×S中满足R.A1=S.A1,…R.AK=S.AK的那些元组;--选择公共属性值相等的元组。去掉S.A1,…S.AK这些列。--做投影操作。则此查询语句的关系代数表达式为:ΠS#,SNAME(σTEACHER=‘LIU’
SEX=‘F’(ΠL(σSC.C#=C.C#
SC.S#=S.S#(S×SC×C))))这里L为S#,SNAME,AGE,SEX,C#,GRADE,CNAME,TEACHER自然联接的计算过程如下:则此查询语句的关系代数表达式为:ΠS57ΠσΠσS#,SNAMETEACHER=‘LIU’
SEX=‘F’SC.C#=C.C#
SC.S#=S.S#S#,SNAME,AGE,SEX,C#,GRADE,CNAME,TEACHER×S×CSCΠσΠσS#,SNAMETEACHER=‘LIU’SE58下面使用优化算法对语法树进行优化1)将每个选择操作分裂成两个选择运算。共得到四个选择操作σteacher=‘liu’σsex=‘f’σc.c#=sc.c#σsc.s#=s.s#下面使用优化算法对语法树进行优化592)使用等价变换规则,把四个选择操作尽可能的向树的叶端靠拢。根据规则4和5可以把σteacher=‘liu’和σsex=‘f’移到投影和另外两个选择操作下面,得到表达式σteacher=‘liu’(σsex=‘f’(C
×SC)×S)) 其中,外层选择仅涉及到关系C,内层选择仅涉及到关系S,所以上式又可变化为
σteacher=‘liu’(C
)×
SC)×σsex=‘f’(S) σsc.s#=s.s#不能再往叶端移动了,因为他的属性涉及到两个关系Sc和S,但σc.c#=sc.c#还可以向下移,与迪卡尔积交换位置2)使用等价变换规则,把四个选择操作尽可能的向树的叶端靠拢。60然后根据规则3,把两个投影合并为一个,这样,原来的语法树变成了如下形式。然后根据规则3,把两个投影合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 忻州职业技术学院《司法文书研习》2023-2024学年第二学期期末试卷
- 通化医药健康职业学院《经典影片鉴赏》2023-2024学年第二学期期末试卷
- 预防侵性主题班会
- 东北财经大学《文献检索与科技创新》2023-2024学年第一学期期末试卷
- 四川省遂宁市射洪中学2025年高考考前冲刺必刷卷(一)生物试题含解析
- 江西洪州职业学院《湖南地方民间舞》2023-2024学年第一学期期末试卷
- 幼儿园档案工作
- 2025年湘西市重点中学高三4月考-物理试题试卷含解析
- 深圳北理莫斯科大学《食品环境学(实验)》2023-2024学年第二学期期末试卷
- 山东省昌乐博闻学校2024-2025学年高考化学试题原创模拟卷(三)含解析
- 《文创灯具设计(论文)》
- 2023年浙江二造《建设工程计量与计价实务(土木建筑)》考试重点题库200题(含解析)
- 信管家风控实战
- 公路工程各主要试验检测项目
- 团队建设(破冰活动)精编版课件
- 岩石性质及其工程分级课件
- 化工仪表自动化-压力仪表培训课件
- 老年人泌尿系统疾病课件
- 四年级道德与法治(下册)第一单元同伴与交往单元测试卷-(含答案)
- 苏教版三年级(下)科学第一单元植物的一生质量测试卷(一)含答案
- 土壤铵态氮的测定
评论
0/150
提交评论