[数据库系统概论第四章优化.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[数据库系统概论第四章优化

第四章 查询优化 查询处理概述(1) 关系操作是非过程化的,其存取路径对用户透明。用户只需说明“干什么”,不必指出“怎么干”。 输入:SQL语句 输出:操作的结果 查询处理概述(2) 对于关系数据库系统,查询优化是: 挑战:必须进行好的优化,才有可接受的性能 机会:关系表达式的语义层次高,提供了优化的可能性。 查询处理概述(3) 相对于由用户选择存取路径的方式: 降低了对用户的要求,方便了用户的使用。避免了因用户选择了错误的存取路径而导致的效率低下。 能够取得更好的优化效果,因为 优化器具有丰富的可使用的信息 当数据库发生变化时优化器容易再次进行优化 优化器能够对多种实现策略逐一进行考虑 优化器集中了最优秀的程序员的智慧和经验 查询处理概述(4) 查询处理的基本步骤: 语法分析与翻译 优化 执行查询语句 查询处理概述(5) 查询优化 查询优化是为关系代数表达式的计算选择最有效的查询计划的过程。 查询优化的过程: 代数优化:力图找出与给定关系代数表达式等价的但执行效率更高的一个表达式。 物理优化:查询语句处理的详细策略的选择,例如选择执行运算所采用的具体算法,选择将使用的特定索引等等。 查询优化的步骤 将查询转换成某种内部表示,通常是语法树。 根据一定的变换规则,把语法树转换为优化形式。 选择低层的操作算法。 生成查询执行计划(也称查询执行方案,是由一系列内部操作构成的)。 查询代价的度量(1) 查询代价:查询处理对各种资源的使用情况 总代价=I/O代价+CPU代价+通信开销 I/O代价的度量方式: I/O块数或者I/O的次数 查询代价的度量(2) 一个重要的影响因素:主存中缓冲区的大小M 最好的情形,所有的数据可以读入到缓冲区中 最坏的情形,缓冲区只能容纳数目不多的数据块——大约每个关系一块。 基本运算的实现 每一基本的代数运算都有多种不同的实现算法。 适用于不同的情况 等值条件,范围条件 数据是聚集的,数据是非聚集的 相关属性上有索引,相关属性上没有索引 执行代价不同 选取运算的实现算法(1) 全表扫描方法:依次访问表的每一个块,对于每一个元组,测试它是否满足选择条件。效率低,但对关系的存储方式没有要求,不需要索引。适用于任何选择条件。 折半扫描: 对于按某一属性排序的文件,且选择条件是该属性上的等值比较方法,可以使用折半的方法扫描文件。效率高,但需要有序文件 选取运算的实现算法(2) 索引扫描:对于在选择条件的属性上建有索引的表,可以采用访问索 引,根据索引项的指示去访问数据元组的方法。 无序索引:访问满足等值条件的元组 有序索引:访问满足范围查找条件的一系列元组。 查询优化的必要性(1) 例:求选修了课程C2的学生姓名 SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=2; 查询优化的必要性(2) 查询优化的必要性(3) 假设: Student表中有1000条学生记录:nstudent= 1000 SC表中有10000条选课记录: nsc= 10000 其中选修2号课程的选课记录为50条: SC(cno,SC)=50 一个块可以装10个Student元组或100个SC元组:fstudent= 10,fSC= 100 Student表占用的块: bstudent= 100 SC表占用的块:bSC= 100 查询优化的必要性(4) 一个块可以装10个Student和SC的连接结果元组:fjoin= 10 缓冲: 内存中一次可以存放5块Student元组、1块SC元组和若干块连接结果元组 读写速度:20块/秒 查询优化的必要性(5) 读数据时间=2100/20=105秒 查询优化的必要性(6) 查询优化的必要性(7) 查询优化的必要性(8) 查询优化的一般准则(1) 选择运算应尽可能先做。目的:减小中间关系。 在执行连接操作前对文件适当进行预处理 排序 在连接属性上建立索引 投影运算和选择运算同时做。目的:避免重复扫描关系。 把投影运算与其前面或后面的双目运算结合起来。目的:减少扫描关系的遍数。 查询优化的一般准则(2) 某些选择运算+在其前面执行的笛卡尔积— 连接运算 找出公共子表达式 表达式的等价性 两个表达式等价:产生的结果关系具有相同的属性集和相同的元组集。 关系代数等价变换规则(1) 所谓关系代数表达式的等价是指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的。上面的优化策略大部分都涉及到代数表达式的变换。 关系代数等价变换规则(2) 关系代数等价变换规则(3) 关系代数等价变换规则(4) 关系代数等价变换规则(5) 关系代数等价变换规则(6) 关系代数等价变换规则(7) 关系代数等价变换规则(8

文档评论(0)

1974wangpeng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档