- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4第四章 全局查询处理和优化-09
第四章 分布查询处理和优化 主要内容 §4.1 查询优化基础 §4.2 查询处理概述 §4.3 查询分解 §4.4 数据本地化 §4.5 片段查询的优化 §4.1查询优化的基础 优化目标 优化就是寻找执行代价(费用和时间)最小的查询执行策略,使系统执行效率降到最低。优化的目标就是指局部执行代价和网络传输代价的和最小。 局部执行代价:主要指输入/输出次数(I/O代价)及CPU处理代价。 网络传输代价:主要指传输启动代价和数据传输代价。 §4.1 查询优化的基础 执行策略 我们以一个例子来说明选择何种执行策略。 例4.1.1 求选修2号课程的学生姓名 SQL表示: select Sname from Students, SC where Students.Sno=SC.Sno and Cno=‘2’; 关系代数表示: Q1= ?sname(?Students.Sno=SC.Sno and Cno=‘2’(Students?SC)) Q2= ?sname(?Cno=‘2’(Students SC)) Q3= ?sname( Students ?Cno=‘2’(SC)) §4.1 查询优化的基础 代价计算 Q1代价计算(仅考虑I/O代价) -计算广义笛卡尔积代价 假定: 在内存中, 存放5块Students元组和一块SC元组, 一块可以装10个Students元组或100个SC元组. 假定: Students有1000个元组,SC有10000个元组, 其中选2号课程的有50个元组 数据只有读到内存才能进行连接 §4.1 查询优化的基础 通过读取块数计算I/O代价 读取块数计算方法: Students 1000个元组 SC 10000个元组 读取总块数: 若每秒读写20块, 则花费: §4.1 查询优化的基础 条件:Students 1000个元组, SC 10000个元组 -笛卡尔集计算后的元组个数为: 103 ?104=107 -连接后的中间结果内存放不下, 需暂时写到外存 -若每块可装10个完成笛卡尔集后的元组, 则写这些元组需: (107 /10)/20=5 ? 104s 选择操作: 读回需5 ? 104s, 假设选择后剩50个元组,均可放在内存 投影操作: 查询共花费: 105+2 ? 5 ? 104 ? 105 s ? 28小时 Q2= ?sname(?Cno=‘2’(Students SC)) Q2代价计算(仅考虑I/O代价) 计算自然连接代价 -也要把数据读到内存进行连接, 但连接结果比笛卡尔积要小得多 -读取块数依然为: -花费为2100/20?105s -假设连接结果大小为104个元组, 写到外存需: (104 /10)/20=50s Q2= ?sname(?Cno=‘2’(Students SC)) -读取自然连接结果, 执行选择运算, 需50s, 选择结果均可放在内存 -投影运算: -总花费为: 105+50+50=205s ? 3.4分钟 Q3代价计算(仅考虑I/O代价) 计算对SC做选择运算的代价 -需读SC到内存进行选择运算 -读SC块数为: 10000/100=100 -花费为: 100/20=5s -选择结果为50个SC元组, 均可放在内存 Q3= ?sname( Students ?Cno=‘2’(SC)) 计算和Students自然连接的代价 -需读Students到内存进行连 接运算 -读Students块数为: 1000/10=100 -花费为: 100/20=5s -连接结果为50个元组, 均可放在内存 -投影运算: 总花费: 5+5=10s §4.1 查询优化的基础 从上述三种策略看,虽然都能实现所要完成的功能,但三种实现方法所须的代价却相差很大。若是分布式系统的多用户、多应用需求的复杂任务,采用不同的实现策略会相差更大,将直接影响整个系统整体性能。因此,确定出一种执行代价最小的查询执行策略是分布式数据库系统必须重视的一因素。 §4.1查询优化的基础 优化内容 优化内容体现如下几点: (1)执行运算的次序。 (2)执行每种运算的方法。如上例,不同方法代价不同。 (3)所访问的副本场地。如:选择就近的场地,节约传输代价。 (4)执行运算的场地的选择。使总的传输代价或总代价最低。 综合考虑,确定出一种执行代价最小的查询执行策略。 §4.1 查询优化的基础 用户或应用看到的是全局关系组成的全局数据库,用户通过查询语言(通常用SQL语言操纵语言)来表达全局查询。之后,由系统将其转换成等价的关系表达式内部表示,为描述关系的操作序列,提出一种称查询树的
文档评论(0)