制造信息技术DB关系系统及其查询优化.ppt

制造信息技术DB关系系统及其查询优化.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要内容 关系系统的定义 一个系统可以定义为关系系统当且仅当它: (1) 支持关系数据库(关系数据结构); (2) 支持选择、投影和(自然)连接运算,对这些运算不必要求定义任何物理存取路径。 关系系统的定义 对关系系统的定义的几点解释: (1) 为什么关系系统除了要支持关系数据结构外,还必须支持选择、投影和连接运算呢? 不支持这三种关系运算的系统,用户使用仍不方便,不能提高用户的生产率,而提高用户的生产率正是关系系统的主要目标之一。 (2) 为什么要求这三种运算不能依赖于物理存取路径呢? 依赖物理存取路径来实现关系运算就降低或丧失了数据的物理独立性。不依赖物理存取路径来实现关系运算就要求关系系统自动地选择路径。为此,系统要进行查询优化,以获得较好的性能。 (3) 要求关系系统支持这三种最主要的运算而不是关系代数的全部运算功能,是因为它们是最有用的运算功能,能解决绝大部分的实际问题。 关系系统的分类 关系系统的分类 关系系统的分类 关系系统及其查询优化 (1)优化器可以从数据字典中获得许多统计信息,并据此选择有效的执行计划,而用户程序则难以获得这些信息。 (2)若数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。 (3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。 (4)优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些技术。 关系系统及其查询优化 查询优化的一般实现步骤: (1)将查询转换成某种内部表示,通常是语法树。 (2)根据一定的等价变换规则把语法树转换成标准(优化)形式。 (3)选择底层的操作算法。 (4)生成查询计划(查询执行方案)。 一个实例 求选修了2号课程的学生姓名。 SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=‘2’ 假定学生-课程数据库中有1000个学生记录,10000个选课记录,其中选修2号课程的选课记录为50个。所有内存处理时间均忽略不计。 系统可以用多种等价的关系代数表达式来完成这一查询: Q1 = ?Sname (? Student.Sno=SC.Sno?SC.Cno=‘2’ (Student?SC)) Q2 = ?Sname (? SC.Cno=‘2’ (Student SC)) Q3 = ?Sname (Student ? SC.Cno=‘2’ (SC)) 一个实例(情况1) 计算广义笛卡尔积(Student?SC) 连接的做法:在内存中尽可能多地装入Student表的若干块元组,留出一块存放SC表的元组。然后把SC中的每个元组与Student中的每个元组连接,连接后的元组装满一块后就写到中间文件上,再从SC中读入一块和内存中的Student元组连接,直到SC表处理完。这时再一次读入若干块Student元组,读入一块SC元组,重复上述处理过程,直到把Student表处理完。 设一个块能装10个Student元组或100个SC元组,在内存中存放5块Student元组和1块SC元组,则读取的总块数为:1000/10+(10000/100)*(1000/(10*5))=2100。若每秒读取20块,则总计要花105 s。 连接后的元组数为1000*10000=107。设每块能装10个元组,则写出这些块要用(107/10)/20=50000 s。 一个实例(情况1) 作选择操作 依次读入连接后的元组,按照选择条件选取满足要求的记录。这一步读取中间文件花费的时间(同写中间文件一样)需50000 s。满足条件的元组为50个,均可放在内存。 作投影 把上步的结果在Sname上作投影输出,得到最终结果。 一个实例(情况2) 计算自然连接 为了执行自然连接,读取Student和SC表的策略不变,总的读取块数仍为2100块花费105s。但自然连接的结果比第一种情况大大减少,为10000个。因此写出这些元组的时间为(10000/10)/20=50 s。 作选择操作 依次读入自然连接后的元组,按照选择条件选取满足要求的记录。这一步读取中间文件花费的时间也为50 s。 作投影 把上步的结果在Sname上作投影输出,得到最终结果。 一个实例(情况3) 先对SC表作选择运算,只需读一遍SC表,存取100块花费时间为5 s,因为满足条件的元组仅50个,不必使用中间文件。 读取Student表,把读入的Student元组和内存中的SC元组作连接。只需读一遍Student表共100块花费时间为5 s。 把连接结果作投影输出。 查询优化的一般准则 (1)选择运算应尽可能先做 在优化策

文档评论(0)

liudao + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档