数据库原理关系系统及其查询优化.ppt_第1页
数据库原理关系系统及其查询优化.ppt_第2页
数据库原理关系系统及其查询优化.ppt_第3页
数据库原理关系系统及其查询优化.ppt_第4页
数据库原理关系系统及其查询优化.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系统原理(第4章),四川大学计算机学院 张天庆,第四章 关系系统及查询优化,要求: 了解关系系统及其定义、分类; 了解查询优化的目的、概念和一般策略。 本章内容比较“理论”,对于设计一个DBMS比较有用。,4.1 关系系统 不确切地说法:“支持关系模型的系统”。 关系系统和关系模型是两个密切相关而有不同的概念。支持关系模型的数据库管理系统称为关系系统。但是关系模型中并非每一部分都是同等重要的,所以我们不苛求完全支持关系模型的系统才能称为关系系统。因此,我们给出一个关系系统的最小要求以及分类的定义。,4.1.1 关系系统的定义 给出配称为关系系统的最小要求。 一个系统可定义为关系系统,当且仅当它: 1.支持关系数据库(关系数据结构) 2.支持选择、投影和(自然)连接运算,对这些运算不必要求定义任何物理存取路径 注:1.对完整性无要求; 2.选、连、投三种运算最有用; 3.不能依赖物理路径,使之具有物理独立性。,4.1.2 关系系统的分类 表式系统:只支持关系(表)数据结构,不支持选择、连接、投影等关系操作。 (最小)关系系统:(刚好)满足关系系统定义的系统。 关系上完备的系统:支持关系数据结构和全部队关系代数操作。 全关系系统,在3基础上,还支持数据结构中域的概念和数据的完整性约束。目前,大多数关系系统已不同程度上接近或达到了这个目标。,表式系统,S,M,I,最小关系系统,S,M,I,关系完备的,S,M,I,全关系的,S,M,I,4.1.3 全关系系统十二条准则 基本了解。 4.2 关系系统的查询优化 关系数据理论出现较早(70年代初),但商品化系统出现较晚,重要原因就在于系统查询效率需要优化。 这是本章重点。,4.2.1 关系系统及其查询优化 思想:由系统代替用户优化。 关系查询优化是影响RDBMS性能的关键因素。关系系统的查询优化既是RDBMS实现的关键技术又是关系系统的优点所在。它减轻了用户选择存取路径的负担。用户只要提出干什么,不必指出怎么干。 查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的“优化”做得更好。,实际系统对查询优化的具体实现一般可以归纳为四个步骤: 1、将查询转换成某种内部表示,通常是语法树。 2、根据一定的等价变换规则把语法树转换成标准(优化)形式。 3、选择低层的操作算法。 4、生成查询计划。,4.2.2 从实例看查询优化的意义 SELECT Student.Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno=2; 此查询求选了2号课程的学生姓名。 有以下四个等价的关系代数表达式可完成此查询: Q1=Sname(Student.sno=sc.snoo=2(StudentSC) Q2=Sname( o=2 (Student SC) Q3=Sname(Student o=2(SC) Q4=Sname(Sname,SnoStudent Snoo=2(SC),假设: 只计I/O时间,不计CPU时间 每内存块能装10个Student元组或100个SC元组 每秒读写20块 Student表有1000个元组,SC有10000元组 内存中用5块放Student元组,一块放SC元组,对于Q1 读Student和SC: 1000/10+(1000/10)/5(10000/100)=2100块 S12100/20=105s 中间结果10,000,000个元组,读写共两次: S2= (10,000,000/10)*2/20=100,000s 总时间S1+S2,约10万秒,超过1天!,对于Q2 读Student和SC不变,仍为105秒; 中间结果10,000个元组,读写共两次: S2= (10,000/10)*2/20=100s 总时间S1+S2,约205秒,降低了3个数量级!,对于Q3 先对SC进行选择,读100块,时间5s,满足条件的元组50个,直接放在1个内存块中; 接着读Student表,与内存块中的SC元组连接,读Student表1遍时间为5s; 连接结果输出,不占I/O时间; 总时间10秒,再降低了1个数量级!,对于Q4 类似于Q3,但不需要读取SC和Student元组全部属性,只读Student的Sno和Sname,SC的Sno,读写块数进一步减少,从而I/O时间还可减少,分析它们,从Q1到Q4,一个比一个效率高,感性地告诉我们:笛卡儿集运算最好能和相应的选择一起构成连接运算;选择能早做就尽量早做;在双目运算前增加投影,只保留必要的字段。,4.2.3 优化的一般策略,1.选择尽可能早做; 2.在连接前尽可能地预处理; 3.投影和选择同时进行; 4. 选择和它前面要进行的笛卡儿集运算结合成一个连接运算; 5. 把投影和其前或后的双目运算结合; 6. 找出公共子表达式。,4.2.4 等价变换规则 连接、笛卡儿集交换律 E1E2 = E2E1 E1 E2 = E2 E1 E1 E2 = E2 E1 F F,2. 连接、笛卡儿集的结合律 3. 投影的串接定律 注意:常常从右向左用,把一次投影变成两次投影。 4. 选择的串接定律 注意:常常从右向左用,把一次复杂条件选择变成多次投影。 5. 选择与投影的交换律 注意一般形式的正用。 6. 选择与笛卡儿集的交换律 (实现选择早做),7. 选择与并的交换 8. 选择与差的交换 9. 投影与笛卡儿集的交换 注意:实现投影早做,只保留必要的字段。 重要的:.9。,4.2.5 关系代数表达式的优化算法 六大步: 选择变串连 尽可能先做选择 尽可能先做投影 同时执行多个选择和投影 分组 分组计算,4.2.6 优化的一般步骤 各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下: 1.把查询转换成某种内部表示 2.把语法树转换成标淮(优化)形式 3.选择低层的存取路径,充分考虑索引、数据的存储分布等存取路径。利用它们进一步改善查询效率。 4.生成查询计划,选择代价最小的。,例4.5 SELECT Student.Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno=2; Q1=Sname(Student.sno=sc.snoo=2(StudentSC),初始语法树 Sname Student.sno=sc.snoo=2 Student SC,选择变串接 Sname Student.sno=sc.sno o=2 Student SC,选择尽可能早作(选择与笛卡儿集交换) Sname Student.sno=sc.sno Student o=2 SC,投影尽可能早作 Sname Student.sno=sc.sno Sno,Sname Sno Student o=2 SC,实例分析。 书上给出的例4.5还不是一个完整的标准(优化)形式。还需增加投影早做。 再给一个例子。 有以下查询,写出关系代数表示的语法树,并利用关系代数表达式优化算法对其进行优化。 SELECT Sname FROM Student, SC, Course WHERE Student.S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论