第7章 查询处理和优化.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 查询处理与优化 7.1 查询处理简介 7.1 查询处理简介 即使是一个简单的单操作符赋值,也有许多不同赋值方式。每种方法都可能在某些场合下优于其它方法。 一个实际查询通常不止涉及一个操作符。包含几个操作符的查询有更多的赋值方式选项,发现或找到一个好查询计划是一项重要的挑战。 DBMS必须考虑可替换的各种可选方式,并选择其中具有最少估算代价的一个 。 7.1 查询处理简介 7.1.1 查询预编译简介 负责对提交查询语句进行语法分析和语义检查。 通过“语法分析器” ,可将合法的SQL语句转换成语法分析树表示,其节点可以是以下两者之一: 原子类:属词法成份,相当于语言编译器产生的token。原子节点没有子节点。 语法类:在查询表达中起相似作用的查询子成份族名称。通常用角括号将描述名括起来表示语法类。 例如,用SFW表示SELECT-FROM-WHERE形式的查询语句,用Condition表示关键字WHERE之后的条件表达式。 语法类节点有子节点--通过语言的语法规则(产生式)之一进行描述。 SQL语法的一个简单子集 语义分析检查 检查关系名的合法性。 出现在语法树关系列表中的关系名,必须是语境DB中已定义的关系或视图名。 检查并解析属性的使用。 在SELECT或FROM子句中出现的每个属性名,必须是关系列表中某个关系的属性,如不然,预编译器必须报错。 检查类型的合法性。 当属性名不是单独出现,而是出现在某个表达式中时,属性类型必须能匹配表达式。 语法分析树举例 7.1.2 从语法树生成初步的逻辑查询计划(1) 解析语法树到一组查询处理基本块. 基本块是一个简单的SFW成份: 有且只有1个SELECT和FROM关键字; 最多一个WHERE子句;且条件表达式具有合取规范形式; 最多一个GROUP BY/HAVING 子句。 典型关系查询优化器的主要优化工作,一般都集中在针对基本块的优化处理方面。 例7.2 查找具有最大职级且至少在红船上服务两次水手,给出该水手id号以及他最早在红船上服务的时间。 7.1.2 从语法树生成初步的逻辑查询计划(2) 解析语法树到一组查询处理基本块. 将查询基本块转化为关系代数表达式 对不含嵌入子查询的基本块,可用一个关系代数表达式来替换整个成份,其中,关系代数表达式自下而上由以下内容组成: FromList中提到的全部关系叉积(作为下级选择操作符选择?c的参数); 选择?c,其中,C是SFWC结构成份中的条件表达式(整个选择作为下级投影操作符的参数); 投影?L,其中,L是SelList中的属性。 当基本块附加有GROUP BY和HAVING操作符时,出于一致性考虑,将GROUP BY和HAVING视为可出现在查询计划中的扩展查询代数操作符。 例7.2 查询对应的关系代数表达式 7.2 查询优化综述 7.2.1 查询赋值计划 查询赋值计划 简称执行计划,或计划 是一棵带有节点标注的扩展关系代数树,节点标注可包括对应关系操作符的存取和实现方法等说明。 考虑下面SQL查询例句: 例7.3 SELECT S.sname FROM Reserves R, Sailors S WHERE R.sid = S.sid AND R.bid=100 AND S.rating 5 对应的关系代数表达式: Πsname(σbid=100 AND rating5 ( Reserves ? sid = sid Sailors)) 图7.3 一个典型的查询赋值计划树 7.2.2 流水线方式赋值 流水线方式与物化方式的概念 流水线赋值 在处理多关系连接时,通常采用流水线方式在上下层连接操作间传递元组。 流水线方式允许我们避免创建和读取临时关系文件,能节省大量的磁盘I/O操作。从而有益于减少查询赋值代价。--只是启发式定律 7.2.4 IBM System R优化器 对现代RDBMS查询优化器具有重要影响,其实现采用了一些重要设计决策,包括: 利用DB实例中的统计信息,来辅助估计查询赋值计划代价; 对二元连接操作符,只考虑内层是基关系(非临时关系)的赋值计划。这个启发式决策,能减少大量需要考虑的可选赋值计划。 优化工作的焦点及其实施,主要集中在无嵌入子查询的SQL查询类。对嵌入查询处理,只是采用通行的方式进行一般性处理。 对投影,不自动进行删除重复记录的操作(除非查询中包含DISTINCT请求) 7.3 关系代数的等价规则 7.3 关系代数等价规则 代数等价定义 如果两个关系代数表达式,对所有输入关系实例都能

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档