数据库原理与技术 -陆勤 第4章 关系系统查询优化.pptVIP

数据库原理与技术 -陆勤 第4章 关系系统查询优化.ppt

  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文档。上传文档
查看更多
第四章 关系系统查询优化 一、由系统来优化的原因 优化器可以从数据字典中获取许多统计信息,优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息。 如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。在非关系系统中必须重写程序。 优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。 优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些优化技术。 注意:查询优化是由系统而非用户来做。 二、系统对查询优化的具体实现步骤 将查询转换成某种内部表示,通常是语法树。 根据一定的等价变换规则把语法树转换成标准(优化)形式。 选择低层的操作算法。 生成查询计划。 三、查询的执行开销 在集中式数据库中: 总代价 = I/O代价 + CPU代价 在多用户环境下: 总代价 = I/O代价 + CPU代价 + 内存代价 一个实例 例 求选修了2号课程的学生姓名。用SQL语言表达: SELECT Student.Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno=2; 多种等价的查询: 一)、第一种情况 1.计算广义笛卡尔积 把Student和SC的每个元组连接起来的方法:在内存中尽可能多地装入某个表(如Student表)的若干块元组,留出一块存放另一个表(如SC表)的元组。然后把SC中的每个元组和Student中每个元组连接,连接后的元组装满一块后就写到中间文件上,再从SC中读入一块和内存中的Student元组连接,直到SC表处理完。这时再一次读入若干块Studene元组,读入一块SC元组,重复上述处理过程,直到把Student表处理完。 设:内存分为6块,一块能装10个Student元组或100个SC元组或10个连接后的元组。库中有1000个学生记录,10000个选课记录,其中选修2号课程的选课记录为50个。 若每秒读写20块,则总计要花105s。 连接后的元组数为103×104 = 107。 设每块能装10个连接后的元组,则写出这些块要用106/20=5×104s。 2.作选择操作 依次读入连接后的元组,按照选择条件选取满足要求的记录。假定内存处理时间忽略。这一步读取中间文件花费的时间(同写中间文件一样)需5×104s。满足条件的元组假设仅50个,均可放在内存。 3.作投影 把第2步的结果在Sname上作投影输出,得到最终结果。 执行查询的总时间为 2×5×104 + 105 s ? 105 s 所有内存处理时间均忽略不计。 二)、第二种情况 1.计算自然连接 读取Student和SC表的策略不变,总的读取块数仍为2100块花费105s。 自然连接的结果为104个(库中有10000个选课记录)。写出这些元组需时间为104/10/20=50 s。 2.读取中间文件块,执行选择运算,需50 s。 3.把第2步结果投影输出。 总的执行时间 105+50+50 = 205 s 三)、第三种情况 1.先对SC表作选择运算,只需读一遍SC表,存取100块花费时间为5s,满足条件的元组仅50个,不必使用中间文件。 2.读取Student表,与内存中的SC元组作连接。也只需读一遍Student表共100块花费时间为5s。 3.把连接结果投影输出。 总的执行时间为 5+5=10 s 假如SC表在Cno上、Student表在Sno上有索引,读取两表的块数可大大减少。总的存取时间将进一步减少到数秒。 四)、有索引的情况 假如SC表的Cno字段上有索引,第l步就不必读取所有的SC元组而只需读取Cno=‘2’的那些元组(50个)。存取的索引块和SC中满足条件的数据块大约总共3~4块。若STUDENT表在Sno上也有索引,则第2步也不必读取所有的STUDENT元组,因为满足条件的SC记录仅50个,涉及最多50个STUDENT记录,因此读取STUDENT表的块数也可大大减少。总的存取时间将进一步减少到数秒。 四、查询优化的一般准则 l. 选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档