第4章_查询处理及优化.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.4 小结 1、DBMS以块作为I/O单位,将磁盘上的块有机的组织成一个整体,一个关系被存储在若干块中。一般以I/O次数衡量算法的性能。 2、外部排序是实现其它数据库操作的基础,多采用两阶段多路归并排序,DBMS对其进行了充分的优化句。 3、由于集合中不能有相同的元素,消除重复元素需要排序或散列,代价较高,而投影操作等可能产生重复元素,因此,SQL中采用包语义,特别是包并操作十分简单。 4.4 小结 4、连接操作是关系模型中必不可少的操作,研究工作者对此进行了深入的研究。嵌套循环连接算法是最简单实用的算法,对于理解连接操作很有帮助。DBMS对连接操作做了充分的优化。 5、通过索引在选择操作和连接操作中的应用,我们可以理解建立一个适当的索引的重要性。现代的关系数据库一般都提供了自动选择索引的实用工具,减少了建立索引的盲目性。 6、查询优化有代数操作优化和物理操作优化两个层面。代数操作优化是通过代数式的等价变换而实现的,我们可以再次体会到理论研究对实际应用的促进作用。 ? 4.3 查询优化 查询优化在关系数据库管理系统中有着非常重要的地位。关系数据库管理系统和非过程化的SQL语言能够取得巨大的成功,关键是得益于查询优化技术的发展。关系查询优化是影响RDBMS性能的关键因素。 由于关系表达式的语义级别很高,使关系数据库管理系统可以从关系表达式中分析查询语义,提供了执行查询优化的可能性。这就为关系数据库管理系统在性能上接近甚至超过非关系系数据库统提供了机遇。 4.3 查询优化 4.3.1 概述 查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的“优化”做得更好。这是因为: 1、优化器可以从数据字典中获取许多统计信息,例如关系中的元组数、关系中每个属性值的分布情况等。优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息。 4.3 查询优化 2、如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。 3、优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。 4、优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些优化技术。 关系数据库查询优化的总目标是:选择有效的策略,求得给定关系表达式的值。 4.3 查询优化 查询优化一般来说,可以归纳为四个步骤: 1、将查询转换成某种内部表示,通常是语法树。 2、根据一定的等价变换规则把语法树转换成标准(优化)形式。 3、选择低层的操作算法。对于语法树中的每一个操作需要根据存取路径、数据的存储分布、存储数据的聚簇等信息来选择具体的执行算法。 4.3 查询优化 4、生成查询计划。查询计划也称查询执行方案,是由一系列内部操作组成的。这些内部操作按一定的次序构成查询的一个执行方案。通常这样的执行方案有多个,需要对每个执行计划计算代价,从中选择代价最小的一个。在集中式关系数据库中,计算代价时主要考虑磁盘读写的I/O次数,也有一些系统还考虑了CPU的处理时间。 步骤(3)和步骤(4)实际上没有清晰的界限,有些系统是作为一个步骤处理的。 4.3 查询优化 目前的商品化RDBMS大都采用基于代价的优化算法。在集中式数据库中,查询的执行开销主要包括: 总代价 = I/O代价 + CPU代价 在多用户环境下,内存在多个用户间的分配情况会明显地影响这些用户查询执行的总体性能。因此,多用户数据库还应考虑查询的内存开销,即: 总代价 = I/O代价 + CPU代价 + 内存代价 4.3 查询优化 4.3.2 一个实例 [例1] 求选修了1024号课程的学生姓名。用SQL语言表达: SELECT Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=1024; 假定学生-课程数据库中有l000个学生记录,l0000个选课记录,其中选修1024号课程的选课记录为50个。 4.3 查询优化 系统可以用多种等价的关系代数表达式来完成这一查询 Q1=πSname(?Student.sno=Sc.Sno?sc.cno=1024 (Student×SC)) Q2=πSname(?sc.cno=’1024’

文档评论(0)

80092355km + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档