9数据库第九章关系查询处理和查询优化_第1页
9数据库第九章关系查询处理和查询优化_第2页
9数据库第九章关系查询处理和查询优化_第3页
9数据库第九章关系查询处理和查询优化_第4页
9数据库第九章关系查询处理和查询优化_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第九章 关系查询处理及其查询优化 9.1 关系数据库系统的查询处理 9.2 关系数据库系统的查询优化 9.3 代数优化2022/8/111离散数学查询处理步骤9.1 关系数据库系统的查询处理查询语句查询计划的执行代码查询树执行策略描述代数优化物理优化等数据库数据字典语法检查语法分析语义分析安全性完整性检查代码生成2022/8/112离散数学9.1 关系数据库系统的查询处理实现查询操作的算法一、选择操作的实现 全表扫描法索引扫描法二、连接操作的实现(见3.4节连接查询)嵌套循环法排序合并法索引连接法2022/8/113离散数学9.2 关系数据库系统的查询优化一、查询优化概述二、一个实例2022

2、/8/114离散数学9.2 关系数据库系统的查询优化一、查询优化概述查询优化的必要性查询优化极大地影响RDBMS的性能。查询优化的可能性关系数据语言的级别很高,使DBMS可以从关系 表达式中分析查询语义。由DBMS进行查询优化的好处用户不必考虑如何最好地表达查询以获得较好的效率系统可以比用户程序的优化做得更好2022/8/115离散数学一、查询优化概述(1)优化器可以从数据字典中获取许多统计信息,而 用户程序则难以获得这些信息(2)如果数据库的物理统计信息改变了,系统可以自动 对查询重新优化以选择相适应的执行计划。在非关系 系统中必须重写程序,而重写程序在实际应用中往往 是不太可能的。(3)优

3、化器可以考虑数百种不同的执行计划,而程序员 一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术 2022/8/116离散数学RDBMS通过某种代价模型计算出各种查询执行策略的执行代价,然后选取代价最小的执行方案集中式数据库执行开销主要包括:磁盘存取块数(I/O代价)处理机时间(CPU代价)查询的内存开销 I/O代价是最主要的 分布式数据库总代价=I/O代价+CPU代价+内存代价通信代价 数据库系统原理查询优化的总目标:选择有效的策略求得给定关系表达式的值使得查询代价最小(实际上是较小) 数据库系统原理一、查询优化概述实际系统的查询优化步骤 1. 将查询转换成某种内部表示,通常

4、是语法树 2. 根据一定的等价变换规则把语法树转换成标准 (优化)形式 3. 选择低层的操作算法 对于语法树中的每一个操作,计算各种执行算法 的执行代价,选择代价小的执行算法 4. 生成查询计划(查询执行方案) 查询计划是由一系列内部操作组成的。2022/8/119离散数学二、一个实例例:求选修了课程2的学生姓名SELECT Student.SnameFROM Student, SCWHERE Student.Sno=SC.Sno AND SC.Cno=2假设1:外存:Student:1000条,SC:10000条, 选修2号课程:50条假设2:一个内存块装元组:10个Student或100个

5、SC, 内存中一次可以存放:5块Student元组,1块SC 元组和若干块连接结果元组假设3:读写速度:20块/秒假设4:连接方法:基于数据块的嵌套循环法2022/8/1110离散数学二、一个实例Q1name(Student.Sno=SC.SnoSC.Cno=2(StudentSC)(1) StudentSC读取总块数=读Student表块数+读SC表遍数*每遍块数=1000/10+(1000/(105) (10000/100) =100+20100=2100 读数据时间=2100/20=105秒中间结果大小 = 1000*10000 = 107 (连接结果的元组数目)写中间结果时间 = 10

6、7/10/20 = 50000秒(2) 读数据时间 = 50000秒(3) 总时间 =1055000050000秒 = 100105秒 = 27.8小时2022/8/1111离散数学二、一个实例Q2name( SC.Cno= 2 (Student SC)(1) Student SC读取总块数= 2100块读数据时间=2100/20=105秒中间结果大小=10000 (sc的元组数) (减少1000倍)写中间结果时间=10000/10/20=50秒(2) 读数据时间=50秒(3) 总时间1055050秒205秒=3.4分2022/8/1112离散数学二、一个实例Q3Sname(Student S

7、C.Cno= 2 (SC)(1) 读SC表总块数= 10000/100=100块读数据时间=100/20=5秒中间结果大小=50条 不必写入外存(2)读Student表总块数= 1000/10=100块读数据时间=100/20=5秒(3) 总时间55秒10秒 2022/8/1113离散数学Q3Sname(Student SC.Cno= 2 (SC)假设SC表在Cno上有索引,Student表在Sno上有索引(1) 读SC表索引 读SC表总块数= 50/1001块读数据时间中间结果大小=50条 不必写入外存(2) 读Student表索引 读Student表总块数= 50/10=5块读数据时间 ?

8、(3) 总时间10秒二、一个实例2022/8/1114离散数学把代数表达式Q1变换为Q2、 Q3, 即有选择和连接操作时,先做选择操作,这样参加连接的元组就可以大大减少,这是代数优化.在Q3中 SC表的选择操作算法有全表扫描和索引扫描2种方法,经过初步估算,索引扫描方法较优 对于Student和SC表的连接,利用Student表上的索引,采用index join代价也较小,这就是物理优化 .数据库系统原理关系代数表达式的等价指用相同的关系代替两个表达式中相应的关系所 得到的结果是相同的常用的等价变换规则 设E1、E2等是关系代数表达式,F是条件表达式1、连接、笛卡尔积交换律E1 E2E2E1E

9、1 E2E2 E1 E1 E2E2 E1 F F9.3 代数优化2022/8/1116离散数学9.3.1 关系代数表达式等价变换规则2、连接、笛卡尔积的结合律 (E1E2) E3E1 (E2E3) (E1 E2) E3E1 (E2 E3) (E1 E2) E3E1 (E2 E3) F1 F2 F1 F23、投影的串接定律 A1,A2, ,An (B1,B2, ,Bm(E)A1,A2, ,An (E)假设: 1)Ai (i=1, 2, , n),Bj ( j = l, 2, , m)是属性名 2)A1, A2, , An构成Bl,B2,Bm的子集2022/8/1117离散数学9.3.1 关系代数

10、等价变换规则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)2022/8/1118离散数学9.3.1 关系代数等价变换规则6、选择与笛卡尔积的交换律(1) 假设:F中涉及的属性都是E1中的属性 F

11、(E1E2) F (E1)E2(2) 假设:F=F1F2,并且F1只涉及E1中的属性, F2只涉及E2中的属性 则F (E1E2) F1(E1) F2 (E2)(3) 假设: F=F1F2,F1只涉及E1中的属性, F2涉及E1和E2两者的属性 F(E1E2) F2(F1(E1)E2) 2022/8/1119离散数学9.3.1 关系代数等价变换规则7、选择与并的交换假设:E=E1E2,E1,E2有相同的属性名 F (E1E2) F (E1)F (E2)8、选择与差运算的交换假设:E1与E2有相同的属性名 F (E1-E2)F (E1) - F (E2)9、选择对自然连接的分配律假设: F只涉及

12、E1与E2的公共属性 F (E1 E2)F (E1) F (E2)2022/8/1120离散数学9.3.1 关系代数等价变换规则10、投影与笛卡尔积的交换假设:E1和E2是两个关系表达式, A1,An是E1的属性, B1,Bm是E2的属性 A1, A2, , An, B1, B2, , Bm (E1E2) A1, A2, , An (E1)B1, B2, , Bm(E2)11、投影与并的交换假设:E1和E2 有相同的属性名 A1, A2, , An (E1E2) A1, A2, , An(E1)A1, A2, , An (E2) 2022/8/1121离散数学9.3.1 关系代数等价变换规则小

13、结:1-2:连接、笛卡尔积的交换律、结合律3: 合并或分解投影运算4: 合并或分解选择运算5-9: 选择运算与其他运算交换10-11:投影运算与其他运算交换2022/8/1122离散数学9.3.2 代数优化的启发式规则选择运算应尽可能先做目的:减小中间关系在执行连接操作前对关系适当进行预处理按连接属性排序在连接属性上建立索引投影运算和选择运算同时做目的:避免重复扫描关系将投影运算与其前面或后面的双目运算结合目的:减少扫描关系的遍数某些选择与其前面要执行的笛卡尔积结合为连接运算提取公共子表达式例: Student.Sno=SC.Sno (StudentSC)Student SC2022/8/11

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

15、择和投影的串接合并成单个 选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时执行或一次扫描中全部完成尽管这种变换似乎违背“选择尽可能早做”的原则, 但这样做效率更高。2022/8/1125离散数学9.3.3 关系代数表达式的优化算法 (5)对内结点分组把上述得到的语法树的内节点分组。每一双目运算(, ,-)和它所有的直接 祖先为一组(这些直接祖先是,运算)。如果其后代直到叶子全是单目运算,则也将它们 并入该组,但当双目运算是笛卡尔积(),而且 其后的选择不能与它结合为等值连接时除外。 把这些单目运算单独分为一组。2022/8/1126离散数学9.3.3 关系代数表达式的优化算法 (6)生成程序生成一个程序,每组结点的计算是程序中的一步。各步的顺序是任意的,只要保证任何一组的计算 不会在它的后代组之前计算。2022/8/1127离散数学9.3.3 关系代数表达式的优化算法例:求选修了课程号为2的学生姓名SELECT Student.SnameFROM Student, SCWHERE Student.Sno=SC.Sno AND SC.Cno=2; 2022/8/1128离散数学9.3.3 关系代数表达式的优化算法例:求选修了课程号为2的学生姓名语法树project(Sname) select(SC.Cno=2) join(Student

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论