网站大量收购闲置独家精品文档,联系QQ:2885784924

第5章 查询处理和优化.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章查询处理和优化ppt课件

第5章 查询处理和优化 5.1 引言 5.2 代数优化 5.3 依赖于存取路径的规则优化 5.4 代价估算优化* 5.1 引言 概述 查询是数据库系统中最基本、最常见和最复杂的操作。对数据库的查询一般都是以查询语言(如SQL)表示。从查询请求出发,直到得到查询结果,这一过程称为查询处理。 关系数据库系统的查询语言一般是“非过程语言”,它减轻了用户选择存取路径的负担。用户只要提出‘干什么’,不必指出‘怎么干’。即用户不必关心查询的具体执行过程,而由DBMS确定合理的、有效的执行策略。DBMS在这方面的作用称为查询优化 。 对于使用非过程查询语言的RDBMS,查询优化是查询处理中非常重要的一环,对系统性能会产生很大的影响。 5.1 引言 2.查询处理的一般过程 先做词法和语法分析,把查询语句变成语法树或语法图;然后进行查询优化,形成执行计划,生成可执行代码,交系统执行。 具体处理过程也可分为解释和编译两种实现方式。 解释方式如图6-1所示。 编译方式如图6-2所示。 对于常用的例行事务,编译方式可以显著地提高数据库性能。 对于那些不怎么重复使用的偶然查询,解释也不失为一种简单、实用的实现方式。这两种实现方式在现有的商用DBMS中都有应用。 5.1 引言 3. 例子 首先看一个简单的例子,说明为什么要进行查询优化。 例:求选修了2号课程的学生姓名。用SQL语言表达: SELECT Sname FROM S,SC WHERE S.SNO=SC.SNO AND SC.CNO=2; 假定学生-课程数据库中有l000个学生记录,l0000个选课记录,其中选修2号课程的选课记录为50个。 系统可以用多种等价的关系代数表达式来完成这一查询 1.Q1= πSname(σ S.sno=sc.sno∧sc.cno=2(S×SC)) 2.Q2= πSname(σ sc.cno=2 (S ||SC)) 3.Q3= πSname(S|| σ sc.cno= 2 (SC)) 我们将看到由于查询执行的策略不同,查询时间相差很大。 5.1 引言 查询执行策略Q1代价分析 计算广义笛卡尔积的代价 把S和SC的每个元组连接起来。一般连接的做法是:在内存中尽可能多地装人某个表(如Student表)的若干块元组,留出一块存放另一个表(如SC表)的元组。然后把SC中的每个元组和S中每个元组连接,连接后的元组装满一块后就写到中间文件上,再从SC中读入一块和内存中的S元组连接,直到SC表处理完。这时再一次读入若干块S元组,读入一块SC元组,重复上述处理过程,直到把S表处理完。 设一个块能装l0个Student元组或l00个SC元组,在内存中存放5块Student元组 和l块SC元组,则读取总块数为: 1000/10+1000/(10 × 5) × (10000/100)=2100块 其中读Student表l00块。读SC表20遍,每遍l00块。若每秒读写20块,则总计要花105(秒)。 连接后的元组数为1000×10000。设每块能装l0个元组,则写出这些块要花1000000/20=50000( 秒)。 5.1 引言 查询执行策略Q1代价分析(续) 选择操作的代价 依次读入连接后的元组,按照选择条件选取满足要求的的记录。假定内存处理时间忽略。这一步读取中间文件花费的时间(同写中间文件一样)需50000 秒。满足条件的元组假设仅50个,均可放在内存。 3) 投影操作的代价 把第2步的结果在Sname上作投影输出,得到最终结果。 因此第一种情况下执行查询的总时间约为105+2×5×10000秒。这里,所有内存处理时间均忽略不计。 5.1 引言 查询执行策略Q2代价分析 计算自然连接的代价 为了执行自然连接,读取Student和SC表的策略不变,总的读取块数仍为2100块,花费l05秒。但自然连接的结果比第一种情况大大减少,为 10000个。因此写出这些元组时间为 10000/10/20=50秒。仅为第一种情况的千分之一。 读取中间文件块,执行选择运算,花费时间也为50秒。 将第2步结果投影输出。 因此,第二种情况总的执行时间≈105+50+50=205秒。 5.1 引言 查询执行策略Q3代价分析 先对SC表作选择运算,只需读一遍SC表,存取l00块花费时间为5秒,因为满足条件的元组仅50个,不必使用中间文件。 读取STUDENT表,把读入的STUDENT元组和内存中的SC元组作连接。也只需读一遍STUDENT表共l00块花费时间为5秒。 把连接结果投影输出。 第三种情况总的执行时

文档评论(0)

118zhuanqian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档