第8章关系查询处理与查询优化电子教案

上传人:yuzo****123 文档编号:137849158 上传时间:2020-07-12 格式:PPT 页数:50 大小:358.50KB
返回 下载 相关 举报
第8章关系查询处理与查询优化电子教案_第1页
第1页 / 共50页
第8章关系查询处理与查询优化电子教案_第2页
第2页 / 共50页
第8章关系查询处理与查询优化电子教案_第3页
第3页 / 共50页
第8章关系查询处理与查询优化电子教案_第4页
第4页 / 共50页
第8章关系查询处理与查询优化电子教案_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第8章关系查询处理与查询优化电子教案》由会员分享,可在线阅读,更多相关《第8章关系查询处理与查询优化电子教案(50页珍藏版)》请在金锄头文库上搜索。

1、第8章 关系查询处理与查询优化,8.1 关系数据库系统的查询处理 8.2 关系数据库系统的查询优化 8.3 查询优化的一般准则 8.4 代数优化 8.5 物理优化 8.6 小结,本章要求与重难点,掌握关系数据库系统的查询处理步骤 掌握RDBMS中查询优化技术(重点和难点),第8章 关系查询处理与查询优化,8.1 关系数据库系统的查询处理 8.2 关系数据库系统的查询优化 8.3 查询优化的一般准则 8.4 代数优化 8.5 物理优化 8.6 小结,8.1 关系数据库系统的查询处理,1. 查询分析 将查询转换成某种内部表示,通常是语法树。 2. 查询检查 根据一定的等价变换规则把语法树转换成标准

2、 (优化)形式。,第8章 关系查询处理与查询优化,8.1 关系数据库系统的查询处理 8.2 关系数据库系统的查询优化 8.3 查询优化的一般准则 8.4 代数优化 8.5 物理优化 8.6 小结,8.2关系数据库系统查询优化,查询优化的必要性 查询优化极大地影响RDBMS的性能。 查询优化的可能性 关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。,关系数据库系统查询优化(续),用户不必考虑如何最好地表达查询以获得较好的效率 系统可以比用户程序的优化做得更好 (1) 优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息,关系数据库系统查询优化(续),(2)如果数

3、据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。 在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。 (3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。,关系数据库系统查询优化(续),查询优化的总目标 选择有效策略,求得给定关系表达式的值,关系数据库系统查询优化(续),例:求选修了课程2的学生姓名 SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=2;,关系数据库系统查询优化(续),假设1:外存: Student:1000

4、条,SC:10000条, 选修2号课程:50条 假设2:一个内存块装元组:10个Student, 或100个SC, 内存中一次可以存放: 5块Student元组, 1块SC元组和若干块连接结果元组 假设3:读写速度:20块/秒 假设4:连接方法:基于数据块的嵌套循环法,执行策略1,1 name(Student.Sno=SC.Sno SC.Cno=2 (StudentSC) StudentSC 读取总块数= 读Student表块数 + 读SC表遍数 *每遍块数 =1000/10+(1000/(105) (10000/100) =100+20100=2100 读数据时间=2100/20=105秒,

5、不同的执行策略,考虑I/O时间,中间结果大小 = 1000*10000 = 107 (1千万条元组) 写中间结果时间 = 10000000/10/20 = 50000秒 读数据时间 = 50000秒 总时间 =1055000050000秒 = 100105秒 = 27.8小时,关系数据库系统查询优化(续),2. 2 name(SC.Cno= 2 (Student SC) 读取总块数= 2100块 读数据时间=2100/20=105秒 中间结果大小=10000 (减少1000倍) 写中间结果时间=10000/10/20=50秒 读数据时间=50秒 总时间1055050秒205秒=3.8分,关系数

6、据库系统查询优化(续),3. 2 Sname(Student SC.Cno= 2 (SC) 读SC表总块数= 10000/100=100块 读数据时间=100/20=5秒 中间结果大小=50条 不必写入外存 读Student表总块数= 1000/10=100块 读数据时间=100/20=5秒 总时间55秒10秒,关系数据库系统查询优化(续),4. 2 name(Student SC.Cno=2 (SC) 假设SC表在Cno上有索引,Student表在Sno上有索引 读SC表索引= 读SC表总块数= 50/1001块 读数据时间 中间结果大小=50条 不必写入外存,关系数据库系统查询优化(续),

7、 读Student表索引= 读Student表总块数= 50/10=5块 读数据时间 总时间10秒,第8章 关系查询处理与查询优化,8.1 关系数据库系统的查询处理 8.2 关系数据库系统的查询优化 8.3 查询优化的一般准则 8.4 代数优化 8.5 物理优化 8.6 小结,8. 3 查询优化的一般准则,选择运算应尽可能先做 目的:减小中间关系 在执行连接操作前对关系适当进行预处理 按连接属性排序 在连接属性上建立索引 投影运算和选择运算同时做 目的:避免重复扫描关系 将投影运算与其前面或后面的双目运算结合 目的:减少扫描关系的遍数,查询优化的一般准则 (续),某些选择运算在其前面执行的笛卡

8、尔积 = 连接运算 例:Student.Sno=SC.Sno (StudentSC) Student SC 提取公共子表达式,第8章 关系查询处理与查询优化,8.1 关系数据库系统的查询处理 8.2 关系数据库系统的查询优化 8.3 查询优化的一般准则 8.4 代数优化 8.5 物理优化 8.6 小结,8. 4 代数优化,关系代数表达式等价 指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的 上面的优化策略大部分都涉及到代数表达式的变换,常用的等价变换规则,设E1、E2等是关系代数表达式,F是条件表达式 l. 连接、笛卡尔积交换律 E1 E2 E2E1 E1 E2E2 E1 E1 F

9、 E2E2 F E1,关系代数等价变换规则(续),2. 连接、笛卡尔积的结合律 (E1E2) E3 E1 (E2E3) (E1 E2) E3 E1 (E2 E3) (E1 E2) E3 E1 (E2 E3) F F F F,关系代数等价变换规则(续),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的子集,关系代数等价变换规则(续),4. 选择的串接定律 F1 ( F2(E) F1 F2(E) 选择

10、的串接律说明 选择条件可以合并 这样一次就可检查全部条件。,关系代数等价变换规则(续),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 (E1E2)F (E1)E2 (2) 假设:F=F1F2,并且F1只涉及E1中的属性, F2

11、只涉及E2中的属性 则由上面的等价变换规则1,4,6可推出: F(E1E2) F1(E1)F2 (E2),关系代数等价变换规则(续),(3) 假设: F=F1F2, F1只涉及E1中的属性, F2涉及E1和E2两者的属性 F(E1E2) F2(F1(E1)E2) 它使部分选择在笛卡尔积前先做,关系代数等价变换规则(续),7. 选择与并的交换 假设:E=E1E2,E1,E2有相同的属性名 F(E1E2) F(E1) F(E2) 8. 选择与差运算的交换 假设:E1与E2有相同的属性名 F(E1-E2) F(E1) - F(E2),关系代数等价变换规则(续),9. 投影与笛卡尔积的交换 假设:E1

12、和E2是两个关系表达式, A1,An是E1的属性, B1,Bm是E2的属性 A1,A2, ,An,B1,B2, ,Bm (E1E2) A1,A2, ,An(E1) B1,B2, ,Bm(E2),关系代数等价变换规则(续),l0. 投影与并的交换 假设:E1和E2 有相同的属性名 A1,A2, ,An(E1E2) A1,A2, ,An(E1) A1,A2, ,An(E2),小结,1-2: 连接、笛卡尔积的交换律、结合律 3: 合并或分解投影运算 4: 合并或分解选择运算 5-8: 选择运算与其他运算交换 5,9,10: 投影运算与其他运算交换,关系代数表达式的优化算法,算法:关系表达式的优化 输

13、入:一个关系表达式的语法树。 输出:计算该表达式的程序。 方法: (1)分解选择运算 利用规则4把形如F1 F2 Fn (E)变换为 F1 (F2( (Fn(E) ),关系代数表达式的优化算法 (续),(2)通过交换选择运算,将其尽可能移到叶端 对每一个选择,利用规则48尽可能把它移到树的叶端。 (3)通过交换投影运算,将其尽可能移到叶端 对每一个投影利用规则3,9,l0,5中的一般形式尽可能把它移向树的叶端。,关系代数表达式的优化算法 (续),(4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成 利用规则35把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。 使多个选

14、择或投影能同时执行,或在一次扫描中全部完成 尽管这种变换似乎违背“投影尽可能早做”的原则,但这样做效率更高。,关系代数表达式的优化算法 (续),(5)对内结点分组 把上述得到的语法树的内节点分组。 每一双目运算(, ,-)和它所有的直接祖先为一组(这些直接祖先是,运算)。 如果其后代直到叶子全是单目运算,则也将它们并入该组,但当双目运算是笛卡尔积(),而且其后的选择不能与它结合为等值连接时除外。把这些单目运算单独分为一组。,关系代数表达式的优化算法 (续),(6)生成程序 生成一个程序,每组结点的计算是程序中的一步。 各步的顺序是任意的,只要保证任何一组的计算不会在它的后代组之前计算。,第8章

15、 关系查询处理与查询优化,8.1 关系数据库系统的查询处理 8.2 关系数据库系统的查询优化 8.3 查询优化的一般准则 8.4 代数优化 8.5 物理优化 8.6 小结,8.5 物理优化,物理优化就是要选择高效合理的操作算法或存取路径,求得优化得查询计划,达到查询优化的目标。,物理优化(续),选择的方法可以是: 基于规则的启发式优化 基于代价估算的优化 两者结合的优化方法,优化的一般步骤,1把查询转换成某种内部表示 2代数优化:把语法树转换成标准(优化) 形式 3物理优化:选择低层的存取路径 4生成查询计划,选择代价最小的,优化的一般步骤 (续),(1)把查询转换成某种内部表示 例:求选修了

16、课程2的学生姓名 SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=2;,(1)把查询转换成某种内部表示,语法树,结果,project(Sname),select(SC.Cno=2),join(Student.Sno=SC.Sno),Student,SC,关系代数语法树,(2)代数优化,利用优化算法把语法树转换成标准(优化)形式,(3)物理优化:选择低层的存取路径,- 优化器查找数据字典获得当前数据库状态信息 选择字段上是否有索引 连接的两个表是否有序 连接字段上是否有索引 然后根据一定的优化规则选择存取路径 如本例中若SC表上建有Cno的索引,则应该利用这个索引,而不必顺序扫描S

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号