第九章关系查询处理和查询优化

第九章关系查询处理和查询优化

ID:40224930

大小:312.00 KB

页数:59页

时间:2019-07-27

第九章关系查询处理和查询优化_第1页
第九章关系查询处理和查询优化_第2页
第九章关系查询处理和查询优化_第3页
第九章关系查询处理和查询优化_第4页
第九章关系查询处理和查询优化_第5页
资源描述:

《第九章关系查询处理和查询优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

2、交给RDBMS的查询语句转换为高效的执行计划。RDBMS查询处理可以分为4个阶段:查询分析、查询检查、查询优化和查询执行。查询分析对查询语句进行扫描、词法分析和语法分析。从查询语句中识别出语言符号,如SQL关键字、属性名和关系名等,进行语法检查和语法分析,即判断查询语句是否符合SQL语法规则。查询检查根据数据字典对合法的查询语句进行语义检查,即检查语句中的数据库对象,如属性名、关系名、是否存在和是否有效。根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查。检查通过后便把SQL查询语句转

3、换成等价的关系代数表达式。查询检查RDBMS一般都用查询树(querytree),也称为语法分析法(syntaxtree),来表示扩展的关系代数表达式。这个过程中要把数据库对象的外部名称转换为内部表示。查询优化每个查询都会有许多可供选择的执行策略和操作算法,查询优化就是选择一个高效执行的查询处理策略。查询优化有多种方法,按照优化的层次一般可分为代数优化和物理优化。查询优化选择的规则:基于规则的基于代价的基于语义的查询执行依据优化器得到执行策略生成查询计划,由代码生成器(codegenerator)生

4、成执行这个查询计划的代码。9.1.2实现查询操作的算法示例选择操作连接操作选择操作的实现例1Select*fromstudentwhere<条件表达式>考虑<条件表达式>的几种情况:C1:无条件C2:Sno=‘200215121’C3:Sage>20C4:Sdept=‘CS’ANDSage>201.简单的全表扫描方法2.索引(或散列)扫描方法连接操作的实现连接操作是查询处理中最耗时的操作之一。例2Select*fromStudent,SCwhereStudent.Sno=SC.Sno;1.嵌套循环方

5、法2.排序-合并方法3.索引连接方法4.HashJoin方法9.2关系数据库系统的查询优化9.2.1查询优化概述9.2.2一个实例9.2.1查询优化概述查询优化的必要性查询优化极大地影响RDBMS的性能。查询优化的可能性关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。由DBMS进行查询优化的好处用户不必考虑如何最好地表达查询以获得较好的效率系统可以比用户程序的优化做得更好(1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息由DBMS进行查询优化的好处(2)如果

6、数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。(3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术查询优化目标查询优化的总目标选择有效策略,求得给定关系表达式的值实际系统的查询优化步骤1.将查询转换成某种内部表示,通常是语法树2.根据一定的等价变换规则把语法树转换成标准(优化)形式实际系统的查询优化步骤3.选择低层的操作算法对于语法树中

7、的每一个操作计算各种执行算法的执行代价选择代价小的执行算法4.生成查询计划(查询执行方案)查询计划是由一系列内部操作组成的。代价模型集中式数据库单用户系统总代价=I/O代价+CPU代价多用户系统总代价=I/O代价+CPU代价+内存代价分布式数据库总代价=I/O代价+CPU代价+内存代价+通信代价4.2.2查询优化的必要性例:求选修了课程C2的学生姓名SELECTStudent.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno='2';查询优化的必

8、要性假设1:外存:Student:1000条,SC:10000条,选修2号课程:50条假设2:一个内存块装元组:10个Student,或100个SC,内存中一次可以存放:5块Student元组,1块SC元组和若干块连接结果元组假设3:读写速度:20块/秒假设4:连接方法:基于数据块的嵌套循环法执行策略1Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))①Student×SC读取总块数=读Student表块数+读S

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。