您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 第4章-数据库关系系统及其查询优化
第四章关系系统及其查询优化本章主要教学内容:关系系统的定义关系数据库系统的查询优化查询优化的一般准则关系代数等价变换规则4.1关系系统1.关系数据库(即关系数据结构)系统中只有表这种结构2.支持选择、投影和(自然)连接运算,对这些运算不要求用户定义任何物理存取路径对关系系统的最低要求。一个数据库管理系统可定义为关系系统,当且仅当它至少支持:说明:不支持关系数据结构的系统显然不能称为关系系统;仅支持关系数据结构,但没有选择、投影和连接运算功能的系统仍不能算作关系系统;支持选择、投影和连接运算,但要求定义物理存取路径,这种系统也不能算作真正的关系系统;选择、投影、连接运算是最有用的运算。4.2关系数据库系统的查询优化查询优化在关系数据库系统中有着非常重要的地位。关系查询优化是影响RDBMS性能的关键因素——查询优化的必要性。关系表达式的语义级别很高,使DBMS可以从关系表达式中分析查询语义——查询优化的可能性。4.2.1关系系统及其查询优化1.由DBMS进行查询优化的好处:用户不必考虑如何最好地表达查询以获得较好的效率;系统可以比用户程序的优化做得更好。原因:(1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息。(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。(3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术。2.查询优化的总目标:选择有效策略,求得给定关系表达式的值。3.实际系统查询优化步骤:(1)将查询转换成某种内部表示,通常是语法树(2)根据一定的等价变换规则把语法树转换成标准(优化)形式(3)选择低层的操作算法:计算各种执行算法的执行代价选择代价小的执行算法(4)生成查询计划(查询执行方案)4.代价模型:集中式数据库单用户系统总代价=I/O代价+CPU代价多用户系统总代价=I/O代价+CPU代价+内存代价分布式数据库总代价=I/O代价+CPU代价[+内存代价]+通信代价4.2.2一个实例例:求选修了课程2号课程的学生姓名SELECTStudent.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno='2'假设1:学生—课程数据库中有Student:1000条,SC:10000条,选修2号课程:50条执行方案1Q1=חsname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))系统可有多种等价的关系代数表达式来完成这一查询:执行方案2Q2=חsname(бSC.Cno='2'(StudentSC))执行方案3Q3=חsname(StudentбSC.Cno='2'(SC))假设2:一个内存块装元组:10个Student,或100个SC,内存中一次可以存放:5块Student元组,1块SC元组和若干块连接结果元组一、第一种执行方案假设3:读写速度:20块/秒执行方案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秒连接后元组个数为:=1000*10000=107假设每块能装10个元组,则写中间结果时间为:写中间结果时间=10000000/10/20=50000秒②作选择操作б:读取中间结果所需时间(与写相同)读数据时间=50000秒(设内存处理时间忽略)③作投影操作П总时间=105+50000+50000秒=100105秒=27.8小时二、第二种执行方案执行方案2Q2=חsname(бSC.Cno='2'(StudentSC))①计算自然连接读取总块数=2100块读数据时间=2100/20=105秒中间结果大小=10000(减少1000倍)写中间结果时间=10000/10/20=50秒②选择操作б读数据时间=50秒③投影操作П总时间=105+50+50秒=205秒=3.4分三、第三种执行方案执行方案3Q3=חsname(StudentбSC.Cno='2'(SC))①选择操作б读SC表总块数=10000/100=100块读数据时间=100/20=5秒中间结果大小=50条不必写入外存②读Student表总块数=1000/10=100块读数据时间=100/20=5秒③投影操作П总时间=5+5秒=10秒此例充分说明了查询优化的必要性!4.2.3查询优化的一般准则1.选择运算应尽可能先做最重要、最基本的一条目的:减小中间关系2.在执行连接操作前对关系适当进行预处理(P161)按连接属性排序在连接属性上建立索引3.投影运算和选择运算同时做目的:避免重复扫描关系4.将投影运算与其前面或后面的双目运算结合目的:减少扫描关系的遍数5.某些选择运算+在其前面执行的笛卡尔积===连接运算例:бStudent.Sno=SC.Sno(Student×SC)StudentSC6.提取公共子表达式4.2.4关系代数等价变换规则所谓关系代数表达式的等价是指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的。关系代数表达式的优化是查询优化的基本课题。优化策略大部分都涉及到代数表达式的等价变换。两个关系表达式E1和E2是等价的,可记为E1≡E2常用的等价变换规则有:设E1、E2等是关系代数表达式,F是条件表达式l.连接、笛卡尔积交换律E1×E2≡E2×E1E1E2≡E2E1E1FE2≡E2FE12.连接、笛卡尔积的结合律(E1×E2)×E3≡E1×(E2×E3)(E1E2)E3≡E1(E2E3)(E1E2)E3≡E1(E2E3)FFFF3.投影的串接定律假设:(1)E是关系代数表达式(2)Ai(i=1,2,…,n),Bj(j=l,2,…,m)是属性名(3){A1,A2,…,An}构成{Bl,B2,…,Bm}的子集πA1,A2,,An(πB1,B2,,Bm(E))≡πA1,A2,,An(E)4.选择的串接定律бF1(бF2(E))≡бF1∧F2(E)选择的串接律说明选择条件可以合并这样一次就可检查全部条件。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)))6.选择与笛卡尔积的交换律(1)假设:F中涉及的属性都是E1中的属性бF(E1×E2)≡бF(E1)×E2(2)假设:F=F1∧F2,并且F1只涉及E1中的属性,F2只涉及E2中的属性则бF(E1×E2)≡бF1(E1)×бF2(E2)(3)假设:F=F1∧F2,F1只涉及E1中的属性,F2涉及E1和E2两者的属性бF(E1×E2)≡бF2(бF1(E1)×E2)它使部分选择在笛卡尔积前先做7.选择与并的交换假设:E=E1∪E2,E1,E2有相同的属性名бF(E1∪E2)≡бF(E1)∪бF(E2)8.选择与差运算的交换假设:E1与E2有相同的属性名бF(E1-E2)≡бF(E1)-бF(E2)9.投影与笛卡尔积的交换假设:E1和E2是两个关系表达式,A1,…,An是E1的属性,B1,…,Bm是E2的属性πA1,A2,…,An,B1,B2,…,Bm(E1×E2)≡πA1,A2,…,An(E1)×πB1,B2,…,Bm(E2)l0.投影与并的交换假设:E1和E2有相同的属性名πA1,A2,…,An(E1∪E2)≡πA1,A2,…,An(E1)∪πA1,A2,…,An(E2)注意:投影与差的交换律不成立。4.2.5关系代数表达式的优化算法算法:关系表达式的优化输入:一个关系表达式的语法树。输出:计算该表达式的程序。方法:(1)分解选择运算利用规则4把形如бF1∧F2∧…∧Fn(E)变换为бF1(бF2(…(бFn(E))…))(2)通过交换选择运算,将其尽可能移到叶端对每一个选择,利用规则4~8尽可能把它移到树的叶端。(3)通过交换投影运算,将其尽可能移到叶端对每一个投影利用规则3,9,l0,5中的一般形式尽可能把它移向树的叶端。(4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成利用规则3~5把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时执行,或在一次扫描中全部完成尽管这种变换似乎违背“投影尽可能早做”的原则,但这样做效率更高。(5)对内结点分组把上述得到的语法树的内节点分组。每一双目运算(×,,∪,-)和它所有的直接祖先为一组(这些直接祖先是б,π运算)。如果其后代直到叶子全是单目运算,则也将它们并入该组,但当双目运算是笛卡尔积(×),而且其后的选择不能与它结合为等值连接时除外。把这些单目运算单独分为一组。(6)生成程序生成一个程序,每组结点的计算是程序中的一步。各步的顺序是任意的,只要保证任何一组的计算不会在它的后代组之前计算。4.2.6查询优化的一般步骤1.把查询转换成某种内部表示2.代数优化:把语法树转换成标准(优化)形式3.物理优化:选择低层的存取路径4.生成查询计划,选择代价最小的例:求选修了课程2号课程的学生姓名SELECTStudent.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno='2';(1)把查询转换成某种内部表示语法树结果project(Sname)select(SC.Cno=2)join(Student.Sno=SC.Sno)StudentSCπSnameSC.Cno=’2’Student.Sno=SC.S×StudentSC关系代数语法树(2)利用优化算法把语法树转换成标准(优化)形式πSnameStudent.Sno=SC.SnoSC.Cno=2×StudentSC(3)物理优化:选择低层的存取路径优化器查找数据字典获得当前数据库状态信息选择字段上是否有索引连接的两个表是否有序连接字段上是否有索引根据一定的优化规则选择存取路径(4)生成查询计划,选择代价最小的。在作连接运算时,若两个表(设为R1,R2)均无序,连接属性上也没有索引,则可以有下面几种查询计划:对两个表作排序预处理对R1在连接属性上建索引对R2在连接属性上建索引在R1,R2的连接属性上均建索引对不同的查询计划计算代价,选择代价最小的一个。在计算代价时主要考虑磁盘读写的I/O数,内存CPU处理时间在粗略计算时可不考虑。本章小结关系系统的定义一个数据库管理系统可定义为关系系统,当且仅当它至少支持:1.关系数据库(即关系数据结构)2.支持选择、投影和(自然)连接运算,且不要求用户定义任何物理存取路径关系系统的查询优化代数优化:关系代数表达式的优化o关系代数等价变换规则o关系代数表达式的优化算法物理优化:存取路径和低层操作算法的选择作业:P1664、5、6
本文标题:第4章-数据库关系系统及其查询优化
链接地址:https://www.777doc.com/doc-3257597 .html