- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全局查询处理和优化
第四章 分布查询处理和优化 Outline §4.1 查询优化基础 §4.2 查询处理概述 §4.3 查询分解 §4.4 数据本地化 §4.5 片段查询的优化 §4.1查询优化的基础 1、优化目标 优化就是寻找执行代价(费用和时间)最小的查询执行策略,使系统执行效率降到最低。因此,优化的目标就是指局部执行代价和网络传输代价的和最小。 (1)局部执行代价:主要指输入/输出次数(I/O代价)及CPU处理代价。 (2)网络传输代价:主要指传输启动代价和数据传输代价。 §4.1 查询优化的基础 2、执行策略 我们以一个例子来说明选择何种执行策略。 例4.1.1设有关系AB{A,B}和BC{B,C},分别有100和1000个元组。AB中有10个元组为A=X,B是外来关键字。 要求:实现如下查询SQL功能。 SELECT * FROM AB,BC WHERE AB.B=BC.B AND A=″x″ §4.1查询优化的基础 2、执行策略-例4.1.1 等价变换 与SQL等价的关系代数表达式:σA=″x″(AB∞BC) 实现的方法及其代价分析 假设:只考虑局部I/O次数代价。 ?策略1: T1:T1=AB∞BC T2:σA=″x″(T1) 分析: T1:需100(AB元组数)*1000(BC元组数)=105(次I/O),T1的元组数为105 T2:需105(T1元组数)次I/O 总代价:T1的代价+T2的代价=2*105(次I/O) §4.1 查询优化的基础 2、执行策略-例4.1.1 策略2: T1:T1=σA=″x″(AB) T2:T1∞BC 分析: T1:需100(AB元组数)次I/O,得:T1的元组数为10 T2:需10(AB元组数)*1000(BC元组数)=104(次I/O) 总代价:100+104≈104(次I/O) 从上述两种策略看,虽然都能实现所要完成的功能,但两种实现方法所须的代价却相差很大。若是分布式系统的多用户、多应用需求的复杂任务,采用不同的实现策略会相差更大,将直接影响整个系统整体性能。因此,确定出一种执行代价最小的查询执行策略是分布式数据库系统必须重视的一因素。 §4.1查询优化的基础 3、优化内容 优化内容体现如下几点: (1)执行运算的次序。 (2)执行每种运算的方法。如上例,不同方法代价不同。 (3)所访问的副本场地。如:选择就近的场地,节约传输代价。 (4)执行运算的场地的选择。使总的传输代价或总代价最低。 综合考虑,确定出一种执行代价最小的查询执行策略。 §4.1 查询优化的基础 用户或应用看到的是全局关系组成的全局数据库,用户通过查询语言(通常用SQL语言操纵语言)来表达全局查询。之后,由系统将其转换成等价的关系表达式内部表示,为描述关系的操作序列,提出一种称查询树的内部表示方法。 1、关系代数 (1)一元运算 U:=σ(选择)/П(投影) (2)二元运算 b:=∞(联接)/X(笛卡儿积)/∪(并)/∩(交)/-(差)/∝(半联接) §4.4 查询优化的基础 (2)等价变换 重复律:UR ≡ UUR 交换律:U1U2R ≡ U2U1R 分配律:U(RbS)≡(UR)b(US) 结合律:Rb1(Sb2T)≡ (Rb1S)b2T 提取律:(UR)b(US) ≡ U(RbS) 其中:R、S、T为关系,U1、U2、U为一元运算符 ,b1、b2、b为二元运算符。 §4.4 查询优化的基础 2、查询树 在查询树中,叶子表示关系,中间节点表示运算,前序遍历关系表示运算次序。 定义: ROOT:=T T:=R/(T)/TbT/UT U:=σF/ПA b:=∞/X/∪/∩/-/∝ §4.4 查询优化的基础 3、举例 例4.2.1 设有一供应关系数据库,有供应者和供应两关系,如下: 供应者:SUPPLIER{SNO,SNAME,AREA} 供应者编号 供应者姓名 供应者所属地域 供应:SUPPLY{SNO,PNO,QTY} 供应者编号 零件号 质量 查询要求:找出地域在″北方″供应100号零件的供应商的信息。 SQL查询语句:SELECT SNO,SNAME FROM SUPPLIER,SUPPLY WHERE AREA=″北方″AND PNO=100 AND SUPPLIER.SNO=SUPPLY.SNO §4.4 查询优化的基础
文档评论(0)