关系查询处理和查询优化pptConvertor_第1页
关系查询处理和查询优化pptConvertor_第2页
关系查询处理和查询优化pptConvertor_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库原理咸阳师范学院信息工程学院第九章关系查询处理和查询优化 本章主要教学内容:9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化 重点及难点: 了解查询处理步骤; 了解查询处理的四个阶段; 掌握优化的方法; 关系查询处理和查询优化 查询优化一般可分为代数优化和物理优化。 代数优化是指关系代数表达式的优化。物理优化是指存取路径和底层操作算法的选择。 9.1关系数据库系统的查询处理9.1.1查询处理步骤 9.1.2实现查询操作的算法示例9.1.1查询处理步骤查询处理的任务是把用户提交给RDBMS的查询语句转换为高效的执行计划。RDBMS查询处理可以分为 4

2、个阶段:查询分析、查询检查、查询优化和查询执行。 查询分析对查询语句进行扫描、词法分析和语法分析。从查询语句中识别出语言符号,如SQL关键字、属性名和关系名等,进行语法检查和语法分析,即判断查询语句是否符合SQL语法规则。查询检查根据数据字典对合法的查询语句进行语义检查,即检查语句中的数据库对象,如属性名、关系名、是否存在和是否有效。根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查。检查通过后便把SQL查询语句转换成等价的关系代数表达式。查询检查RDBMS 一般都用查询树(query tree),也称为语法分析法(syntax tree),来表示扩展的关系代 数表达式。这个过程

3、中要把数据库对象的外部名称转换为内部表示。查询优化每个查询都会有许多可供选择的执行策略和操作算法,查询优化就是选择一个高效执行的查询处理策略。查询优化有多种方法,按照优化的层次一般可分为代数优化和物理优化。查询优化选择的规则:基于规则的基于代价的基于语义的查询执行依据优化器得到执行策略生成查询计划,由代码生成器(code gen erator)生成执行这个查询计划的代码。9.1.2 实现查询操作的算法示例选择操作连接操作选择操作的实现例 1 Select * from student where < 条件表达式 >考虑 <条件表达式 >的几种情况:C1 :无条件C2:S

4、no=1'C3: Sage>20C4: Sdept= CS' AND Sage>201. 简单的全表扫描方法2. 索引(或散列)扫描方法连接操作的实现 连接操作是查询处理中最耗时的操作之一。例 2 Select * from Student , SC where Student.Sno=SC.Sno;1. 嵌套循环方法2. 排序 -合并方法3. 索引连接方法4. Hash Join 方法9.2 关系数据库系统的查询优化9.2.1 查询优化概述9.2.2 一个实例9.2.1 查询优化概述查询优化的必要性查询优化极大地影响 RDBMS 的性能。查询优化的可能性关系数据语

5、言的级别很高,使 DBMS 可以从关系表达式中分析查询语义。由 DBMS 进行查询优化的好处 用户不必考虑如何最好地表达查询以获得较好的效率 系统可以比用户程序的优化做得更好(1) 优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息由 DBMS 进行查询优化的好处(2) 如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行 计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。(3) 优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。(4) 优化器中包括了很多复杂的优化技术查询优化目标查询优化的总目标 选择有

6、效策略,求得给定关系表达式的值 实际系统的查询优化步骤1. 将查询转换成某种内部表示,通常是语法树2. 根据一定的等价变换规则把语法树转换成标准 (优化)形式实际系统的查询优化步骤3. 选择低层的操作算法 对于语法树中的每一个操作 计算各种执行算法的执行代价 选择代价小的执行算法4. 生成查询计划 (查询执行方案 ) 查询计划是由一系列内部操作组成的。 代价模型 集中式数据库 单用户系统总代价 = I/O 代价 + CPU 代价多用户系统总代价 = I/O 代价 + CPU 代价 + 内存代价 分布式数据库总代价 = I/O 代价 + CPU 代价 + 内存代价 + 通信代价4.2.2 查询优

7、化的必要性例:求选修了课程C 2的学生姓名SELECT Student.SnameFROM Student, SCWHERE Student.Sno=SC.SnoAND SC.Cno='2'查询优化的必要性假设 1:外存:Student:1000 条 ,SC:10000 条, 选修 2 号课程 :50 条 假设 2:一个内存块装元组 :10 个 Student, 或 100 个 SC, 内存中一次可以存放 5 块 Student 元组 ,1块 SC 元组和若干块连接结果元组假设 3:读写速度:20 块 /秒假设 4:连接方法:基于数据块的嵌套循环法 执行策略 1Q1= ns n

8、ame(6 Stude nt.S no=SC.S no A SC.C no=2 (Stude nt x SC) Studentx SC读取总块数 = 读 Student 表块数 + 读 SC 表遍数* 每遍块数=1000/10+(1000/(10 5) x (x1 0000/1 00)= 1 00+20 x1 00= 2 1 00读数据时间 =2100/20=105 秒不同的执行策略 ,考虑 I/O 时间中间结果大小 = 1000*10000 = 107(1 千万条元组 )写中间结果时间 = /10/20 = 50000 秒 6 读数据时间 = 50000 秒 n总时间 =1055000050

9、000 秒 = 100105 秒 = 27.8 小时查询优化的必要性2. Q 2= ns name(6 SC.C no=' 2' (Stude ntSC) 读取总块数 = 2100 块 读数据时间 =2100/20=105 秒 中间结果大小 =10000 (减少 1000 倍) 写中间结果时间 =10000/10/20=50 秒6 读数据时间 =50 秒n总时间= 1055050秒= 205秒=3.4 分 查询优化的必要性3. Q 2= n Sname(Student6 SC.Cno=' 2' (SC)6读 SC 表总块数 = 10000/100=100 块 读

10、数据时间 =100/20=5 秒 中间结果大小 =50 条 不必写入外存读 Student 表总块数 = 1000/10=100 块 读数据时间 =100/20=5 秒n总时间= 5 5 秒= 10 秒 查询优化的必要性4. Q 2= n S name(Student6 SC.Cno='2' (SC)假设SC表在Cno上有索引,Student表在Sno上有索引 6读 SC 表索引 = 读 SC 表总块数 = 50/100<1 块 读数据时间 中间结果大小 =50 条 不必写入外存 查询优化的必要性读 Student 表索引 = 读 Student 表总块数 = 50/10

11、=5 块读数据时间n总时间10秒9.3代数优化9.3.1关系代数表达式等价变换规则9.3.2查询树的启发式优化9.3.1关系代数表达式等价变换规则关系代数表达式等价指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的 上面的优化策略大部分都涉及到代数表达式的变换常用的等价变换规则设E1、E2等是关系代数表达式,F是条件表达式I. 连接、笛卡尔积交换律E1X E2 三 E2X E1E1E2 三 E2 E1E1 F E2 三 E2 F E1关系代数等价变换规则2. 连接、笛卡尔积的结合律(E1 X E2) X E3 三 E1 X (E2 X E3)(E1E2)E3 三 E1(E2E3)(E

12、1E2)E3 三 E1(E2E3)FFFF关系代数等价变换规则3. 投影的串接定律?cAlA2h岀三兀An (El假设:1) E是关系代数表达式2) Ai(i=1 , 2,,n), Bj(j=l , 2,m)是属性名3) A1, A2,An构成Bl , B2,,Bm的子集关系代数等价变换规则4. 选择的串接定律6 F1 ( 6 F2 ( E)三 6 F1A F2(E)选择的串接律说明选择条件可以合并这样一次就可检查全部条件。关系代数等价变换规则5. 选择与投影的交换律(1) 假设:选择条件F只涉及属性A1,An三'假设:F中有不属于 A1,An的属性B1,BmTtAlrA2,小门(汁(

13、Hj)三tcA 1:A2,:An(oi1'tiA 1A2,An:B 1,B2.关系代数等价变换规则6. 选择与笛卡尔积的交换律(1)假设:F中涉及的属性都是 E1中的属性6 F (E1 X E2)三 6 F (E1) X E2假设:F=F1 A F2,并且F1只涉及E1中的属性,F2只涉及E2中的属性 则由上面的等价变换规则1, 4, 6可推出:6 F(E1 X E2)三 6 F1(E1) X 6 F2 (E2)关系代数等价变换规则假设:F=F1 A F2,F1只涉及E1中的属性,F2涉及E1和E2两者的属性6 F(E1 X E2)三 6 F2(6 F1(E1) X E2)它使部分选择

14、在笛卡尔积前先做关系代数等价变换规则7. 选择与并的交换假设:E=E1 U E2, E1 , E2有相同的属性名6 F(E1 U E2)三 6 F(E1) U 6 F(E2)8. 选择与差运算的交换假设:E1与E2有相同的属性名6 F(E1-E2)三 6 F(E1) - 6 F(E2)关系代数等价变换规则9. 投影与笛卡尔积的交换假设:E1和E2是两个关系表达式,A1,An是E1的属性,B1,Bm是E2的属性n A1,A2,,An,B1,B2,Bm (E1 X E2)三 n A1,A2,An (E1)X n B1,B2,Bm(E2)关系代数等价变换规则10. 投影与并的交换假设:E1和E2有相

15、同的属性名n A1,A2,,An(E1 U E2)三n A1,A2,An(E1) U n A1,A2,An(E2)9.3.2查询树的启发式优化选择运算应尽可能先做目的:减小中间关系在执行连接操作前对关系适当进行预处理按连接属性排序在连接属性上建立索引 投影运算和选择运算同时做 目的:避免重复扫描关系 将投影运算与其前面或后面的双目运算结合 目的:减少扫描关系的遍数9.3.2 查询树的启发式优化 某些选择运算在其前面执行的笛卡尔积=> 连接运算例:6 Student.Sno=SC.Sno (Studentx SC)Student SC提取公共子表达式 关系代数表达式的优化算法 算法:关系表

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

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

18、计算。 优化的一般步骤1把查询转换成某种内部表示2 代数优化:把语法树转换成标准(优化)形式3 物理优化:选择低层的存取路径4 生成查询计划,选择代价最小的优化的一般步骤(1)把查询转换成某种内部表示例4:求选修了课程C 2的学生姓名SELECT Stude nt.S nameFROMStude nt, SCWHERE Stude nt.S no=SC.S noANDSC.C no=2;(1)把查询转换成某种内部表示语法树 结果project(S name)seleci(.SC.Cno- 2 )joi n(Stude nt.S no=SC.S no)Stude ntSC关系代数语法树(2 )代数优化利用优化算法把语法树转换成标准(优化)形式9.4物理优化9.4.1基于启发式规则的存取路径选择优化9.4.2基于代价的优化9.4物理优化-优化器查找数据字典获得当前数据库状态信息选择字段上是否有索引连接的两个表是否有序连接字段

温馨提示

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

评论

0/150

提交评论