第9章 数据库.ppt_第1页
第9章 数据库.ppt_第2页
第9章 数据库.ppt_第3页
第9章 数据库.ppt_第4页
第9章 数据库.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、第9章 关系查询处理和查询优化,本章主要内容,关系数据库系统的查询处理 关系数据库系统的查询优化 代数优化 物理优化,9.1 关系数据库系统的查询处理,实现查询操作的算法示例,一.选择操作的实现 Select * from student Select * from student where Sno200215121; Select * from student Where Sage20; Select * from student Where SdeptCS AND Sage20; Select * from student Where SdeptCS or Sage20;,1.Selec

2、t * from student 搜索方法: 全表扫描,2.Select * from student where Sno200215121; 搜索算法: 全表扫描 索引扫描 在聚集索引的属性上的等值比较 在非聚集索引属性上的等值比较 散列扫描,聚簇索引,非聚簇索引,3. Select * from student Where Sage20; 全表扫描 索引扫描 在聚集索引的属性上比较 对于形如Av或Av的比较条件,首先通过主索引(如B+树索引)搜索,定位在满足Av或Av条件的第一个索引项,然后通过该指针到文件中搜索磁盘块,并从该磁盘块开始顺序访问所有的磁盘块,直到文件结束。 对于形如Av或A

3、v的比较条件,没有必要查找索引,直接从第一个叶节点读取,直到Av 。,在非聚集索引属性上比较 对于形如Av或Av的比较条件,首先通过辅助索引搜索定位在满足Av或Av条件的第一个索引项,并通过该索引项中的指针搜索并访问相应文件块;然后顺序读取叶结点链表中的下一个索引项,并通过该索引项中的指针搜索并访问相应文件块直到叶结点链表结束。 对于形如Av或Av的比较条件,直接从索引的叶结点链表头开始顺序扫描每一个叶结点中的每一个索引项,并通过该索引项中的指针搜索并访问相应文件块,直至遇到(但不包含)不满足Av或Av条件的第一个索引项或叶结点链表尾为止。 如果满足查询条件的记录数很多,使用非聚集索引的代价甚

4、至比线性搜索还要大。非聚集索引只适合于满足查询条件的记录很少时使用。,4.Select * from student Where SdeptCS AND Sage20; 1) 全表扫描 2) 索引扫描 如果其中一个选择属性Ai上存在索引。则首先用索引选择方式选择;然后在内存缓冲区中,通过测试每条检索到的记录是否满足其余的选择条件,所有满足其余选择条件的记录都是该合取选择操作的最后结果。,5.Select * from student Where SdeptCS or Sage20; 1)全表扫描 任一个析取选择中无索引,则要全表扫描 2) 索引扫描 如果析取选择中的每个简单选择谓词i的属性上都

5、存在相应的索引,则首先通过索引来检索指向满足谓词i的记录的指针,并将这些记录的指针列表记为Li;然后计算所有Li的并集列表L,要求并集列表L中的所有指针按升序排列;最后根据有序的并集列表L中的每一个指针到文件中去访问磁盘块并检索相关记录。,二、连接操作的实现 Select * from student,sc Where student.sno=sc.sno 1) 嵌套循环方法(nested loop) 对外层循环(student)中的每一个元组,检查内层循环(sc)的元组,2) 排序-合并方法 将连接的表按连接属性进行排序,3) 索引-连接方法 在sc表的sno上建立索引。 对student中

6、每个元组,由sno通过sc的索引查找相应的sc元组 把这些sc元组与student元组连接起来 循环执行,直到student表中元组处理完。,4) 散列连接方法 对于参与连接的两个关系r和s,首先通过散列函数h把关系r和s的元组分别划分成在连接属性值上具有相同散列值的子集ri和si,然后分别计算ri si。,9.2 关系数据库系统的查询优化,处理一个给定的查询,尤其是复杂的查询,通常会有许多种策略。 RDBMS能够构造并选择出一个具有最小查询执行代价的查询执行计划。 关系数据库系统和非过程化的SQL语言能够取得巨大成功关键是得益于查询优化技术的发展。查询优化是影响RDBMS性能的关键因素。,查

7、询优化步骤,逻辑优化,即产生逻辑上与给定关系代数表达式等价的表达式; 物理优化,选择高效合理的操作算法或存取路径,产生不同的查询执行计划。 代价估计,即估计每个执行计划的代价;,代价估算,访问外存的开销. 存储中间文件的开销。 计算开销( CPU开销)。 通信开销:数据在各结点之间传输的开销。 对于大型数据库系统而言,在磁盘上存取数据的代价通常是最重要的代价。,一个实例,例:求选修了2号课程的学生姓名 SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=2;,假设1:外存: Student:1000

8、条,SC:10000条, 选修2号课程:50条 假设2: 一个内存块装元组:10个Student,或100个SC,或者10个连接结果元组。 内存中一次可以存放:5块Student元组,1块SC 元组和1块结果元组 假设3:读写速度:20块/秒 假设4:连接方法:基于数据块的嵌套循环法。,执行策略1,1 sname (Student.Sno=SC.Sno SC.Cno=2 (StudentSC) StudentSC 读取总块数=读Student表块数 + 读SC表遍数 *每遍块数 =1000/10+(1000/(105)(10000/100) =100+20100=2100,读数据时间=2100

9、/20=105秒 中间结果大小=1000*10000 = 107 写中间结果时间=10000000/10/20 = 50000秒, 读数据时间 = 50000秒 满足条件的元组个数为50个,放在内存,不需要往中间文件写。, 投影不需要I/O读写。,总时间 =1055000050000秒 = 100105秒 = 27.8小时,执行策略2, Student SC 读取总块数= 2100块 读数据时间=2100/20=105秒 中间结果大小=10000(SC表的大小) 写中间结果时间=10000/10/20=50秒, 读数据时间=50秒 满足条件的元组个数为50个,放在内存,不需要往中间文件写。,投

10、影不需要I/O读写。,总时间1055050秒205秒3.4分,2 name(SC.Cno= 2 (Student SC),执行策略3,3Sname(Student SC.Cno= 2 (SC) 读SC表总块数= 10000/100=100块 读数据时间=100/20=5秒 中间结果大小=50条 不必写入外存 读Student表总块数= 1000/10=100块 读数据时间=100/20=5秒 投影不需要I/O读写。 总时间55秒10秒,总结,选择运算应尽可能先做 由于选择运算可能大大减少元组的数量,同时选择运算还可以使用索引存取元组。 把某些选择与其前的笛卡尔积操作结合形成连接操作 投影运算与

11、其前的选择运算一起做,避免重复扫描关系,9.3 代数优化,9.3.1 关系代数等价变换规则,设E1、E2等是关系代数表达式,F是条件表达式 1) 连接、笛卡尔积交换律 E1 E2 E2E1 E1 E2 E2 E1 E1 F E2 E2 F E1,3) 投影的串接定律 A1,A2, ,An( B1,B2, ,Bm(E) A1,A2, ,An (E) 假设: 1)E是关系代数表达式 2)Ai(i=1,2,n), Bj(j=l,2,m)是属性名 3)A1, A2, , An构成Bl,B2,Bm的子集,4) 选择的串接定律 F1( F2(E) F1 F2(E) 选择的串接律说明选择条件可以合并 这样一

12、次就可检查全部条件。,5) 选择与投影的交换律 (1)假设: 选择条件F只涉及属性A1,An F (A1,A2, ,An(E) A1,A2, ,An(F(E) (2)假设: F中有不属于A1, ,An的属性B1,Bm A1,A2, ,An ( F(E) A1,A2, ,An(F (A1,A2, ,An,B1,B2, ,Bm(E),6) 选择与笛卡尔积的交换律 (1) 假设:F中涉及的属性都是E1中的属性 F (E1E2)F (E1)E2 (2) 假设:F=F1F2,并且F1只涉及E1中的属性, F2只涉及E2中的属性 F(E1E2) F1(E1)F2 (E2),(3) 假设: F=F1F2,

13、F1只涉及E1中的属性, F2涉及E1和E2两者的属性 F(E1E2) F2(F1(E1)E2) 它使部分选择在笛卡尔积前先做,7) 选择与并的交换 假设:E=E1E2,E1,E2有相同的属性名 F(E1E2) F(E1) F(E2) 8) 选择与差运算的交换 假设:E1与E2有相同的属性名 F(E1-E2) F(E1) - F(E2),9) 投影与笛卡尔积的交换 假设:E1和E2是两个关系表达式, A1,An是E1的属性, B1,Bm是E2的属性 A1,A2, ,An,B1,B2, ,Bm (E1E2) A1,A2, ,An(E1) B1,B2, ,Bm(E2),10) 投影与并的交换 假设

14、:E1和E2 有相同的属性名 A1,A2, ,An(E1E2) A1,A2, ,An(E1) A1,A2, ,An(E2),9.3.2 查询树的启发式优化,选择运算应尽可能先做 由于选择运算可能大大减少元组的数量,同时选择运算还可以使用索引存取元组。 投影运算和选择运算同时做 避免重复扫描关系 将投影运算与其前面或后面的双目运算结合 减少扫描关系的遍数,某些选择运算在其前面执行的笛卡尔积 = 连接运算 例:Student.Sno=SC.Sno (StudentSC) Student SC 提取公共子表达式 定义视图的表达式,9.3.3 关系代数表达式的优化算法,算法:关系表达式的优化 输入:一

15、个关系表达式的语法树。 输出:计算该表达式的程序。,方法: (1)分解选择运算 利用规则4把形如F1 F2 Fn (E)变换为 F1 (F2( (Fn(E) ) (2)通过交换选择运算,将其尽可能移到叶端 (3)通过交换投影运算,将其尽可能移到叶端 (4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成,(5)对内结点分组 把上述得到的语法树的内节点(非根结点和非叶结点)分组。 每一双目运算(, ,-)和它所有的直接父结点为一组(这些直接祖先是,运算)。 如果其子孙结点一直到叶子全是单目运算(,运算),则也将它们并入该组. 但当双目运算是笛卡尔积(),而且其子结点的选择不能与它结合为等值

16、连接时,这样的选择子结点不与该结点同组。把这些单目运算单独分为一组。,(6)生成程序 生成一个程序,每组结点的计算是程序中的一步。 各步的顺序是任意的,只要保证任何一组的计算不会在它的后代组之前计算。,优化实例,例:求选修了2号课程的学生姓名 SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=2;,(1)把查询转换成某种内部表示,(2)把语法树转换成标准(优化)形式 用选择串接定律 Student.Sno=SC.Sno SC.Cno=2 Student.Sno=SC.S(SC.Cno=2) 将语法

17、树变换为如图示,使用选择与笛卡儿运算的交换律 SC.Cno=2 (StudentSC) Student( SC.Cno=2(SC)),将选择运算与笛卡儿乘积转换为连接运算公式,9.4 物理优化,9.4.1 基于启发式规则的存取路径选择优化 一、选择操作的启发式规则 1. 对于小关系,使用全表顺序扫描,即使选择列上有索引。 对于大关系,启发式规则有: 2. 对于选择条件是主码值的查询.查询结果最多是一个元组,可以选择主码索引。 3. 对于选择条件是非主属性值的查询,并且选择列上有索引.要估算查询结果的元组数目.如果比例较小(10%)可以使用索引扫描,否则还是使用全表顺序扫描。,4. 对于选择条件

18、是属性上的非等值查询或者范围查询,并且选择列上有非聚集索引.要估算查询结果的元组数目.如果比例较小(10%)可以使用索引扫描.否则还是使用全表顺序扫描 5.对于选择条件是属性上的范围查询,并且选择列上有聚集索引,使用索引扫描. 5. 对于用AND连接的合取选择条件.如果有涉及这些属性的组合索引.优先采用组合索引扫描方法.如果某些属性上有一般的索引.则可以用索引扫描方法.否则使用全表顺序扫描。 6. 对于用OR连接的析取选择条件,一般使用全表顺序扫描,二、连接操作的启发式规则:,1. 如果2个表都已经按照连接属性排序 .选用排序-合并方法 2. 如果一个表在连接属性上有索引 .选用索引连接方法

19、3. 如果上面2个规则都不适用,其中一个表较小.选用Hash join方法 4. 可以选用嵌套循环方法,并选择其中较小的表,确切地是占用的块数(b)较少的表,作为外表(外循环的表) 。,9.4.2 基于代价的优化,一、统计信息 1. 对每个基本表 .该表的元组总数(N) .元组长度(l) .占用的块数(B) .占用的溢出块数(BO) 2. 对基表的每个列.该列不同值的个数(m) .选择率(f)(如果不同值的分布是均匀的,f1/m.如果不同值的分布不均匀,则每个值的选择率具有该值的元组数/N ).该列最大值.该列最小值.该列上是否已经建立了索引.索引类型(B+树索引、Hash索引、聚集索引) 3. 对索引(如B+树索引) .索引的层数(L).不同索引值的个数.索引的选择基数S(有S个元组具有某个索引值).索引的叶结点数(Y)。,二、代价估算示例,1.全表扫描算法的代价估算公式 .如果基本表大小为B块,全表扫描算法的代价costB .如果选择条件是码值,那么平均搜索代价costB/2,2. 索

温馨提示

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

评论

0/150

提交评论