信息科学与技术学院计算机系课件_第1页
信息科学与技术学院计算机系课件_第2页
信息科学与技术学院计算机系课件_第3页
信息科学与技术学院计算机系课件_第4页
信息科学与技术学院计算机系课件_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

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

文档简介

信息科学与技术学院计算机系数据库系统概论AnIntroductiontoDatabaseSystem第九章关系查询处理和查询优化AnIntroductiontoDatabaseSystem信息科学与技术学院计算机系数据库系统概论AnIntrodu1第九章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第九章关系系统及其查询优化9.1关系数据库系统的查询处29.1关系数据库系统的查询处理9.1.1查询处理步骤9.1.2实现查询操作的算法示例AnIntroductiontoDatabaseSystem9.1关系数据库系统的查询处理9.1.1查询处理步骤An39.1.1查询处理步骤查询分析词法/语法/语义分析符号名转换查询检查语义检查安全性检查完整性检查查询优化代数优化物理优化查询执行查询计划生成代码生成AnIntroductiontoDatabaseSystem9.1.1查询处理步骤查询分析AnIntroductio49.1关系数据库系统的查询处理9.1.1查询处理步骤9.1.2实现查询操作的算法示例AnIntroductiontoDatabaseSystem9.1关系数据库系统的查询处理9.1.1查询处理步骤An59.1.2实现查询操作的算法示例一选择操作的实现二连接操作的实现AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例一选择操作的实现AnI69.1.2实现查询操作的算法示例一选择操作的实现1、简单的全表扫描方法2、索引(或散列)扫描方法[例1]Select*fromstudent where<条件表达式>表达式情况:C1:无条件;C2:Sno=‘200215121’;C3:Sage>20;C4:Sdept=‘CS’ANDSage>20;AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例一选择操作的实现AnI79.1.2实现查询操作的算法示例1、简单的全表扫描方法AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例1、简单的全表扫描方法An89.1.2实现查询操作的算法示例2、索引(或散列)扫描方法[例1-C2]Sno上有索引[例1-C3]Sage上有B+树索引[例1-C4]Sdept和Sage上都有索引AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例2、索引(或散列)扫描方法99.1.2实现查询操作的算法示例二连接操作的实现1、嵌套循环方法(nestedloop)2、排序-合并方法(sort-mergejoin)3、索引连接(IndexJoin)方法4、HashJoin方法[例2]Select*fromstudent,sc wherestudent.sno=sc.sno;AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例二连接操作的实现AnI109.1.2实现查询操作的算法示例1、嵌套循环方法AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例1、嵌套循环方法AnIn119.1.2实现查询操作的算法示例2、排序合并方法20021512120021512220021512320021512420021512122002151213200215121120021512222002151223200215123520021512332002151231SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例2、排序合并方法20021129.1.2实现查询操作的算法示例3、索引连接方法20021512320021512220021512120021512420021512122002151233200215123120021512122002151223200215121520021512232002151231SNOSNOCNO索引表AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例3、索引连接方法20021139.1.2实现查询操作的算法示例3、HashJoin方法20021512320021512220021512120021512412002151233200215122520021512132002151222200215121120021512332002151232200215121SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例3、HashJoin方法14第四章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第四章关系系统及其查询优化9.1关系数据库系统的查询处159.2关系数据库系统的查询优化查询优化的必要性查询优化极大地影响RDBMS的性能。

查询优化的可能性关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。AnIntroductiontoDatabaseSystem9.2关系数据库系统的查询优化查询优化的必要性AnIntr169.2.1查询优化概述关系系统的查询优化既是RDBMS的关键技术又是关系系统的优点所在;大大减轻了用户的负担。AnIntroductiontoDatabaseSystem9.2.1查询优化概述关系系统的查询优化既是RDBMS的关179.2.1查询优化概述由DBMS进行查询优化的好处用户不必考虑如何最好地表达查询以获得较好的效率系统可以比用户程序的优化做得更好 (1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息

AnIntroductiontoDatabaseSystem9.2.1查询优化概述由DBMS进行查询优化的好处AnI18由DBMS进行查询优化的好处(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。 在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。(3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术AnIntroductiontoDatabaseSystem由DBMS进行查询优化的好处(2)如果数据库的物理统计信息改199.2.1查询优化概述集中式数据库查询开销:I/O+CPU+内存分布式数据库查询开销:I/O+CPU+内存+通信代价查询优化的总目标选择有效策略,求得给定关系表达式的值,使得查询代价较小AnIntroductiontoDatabaseSystem9.2.1查询优化概述集中式数据库查询开销:AnIntr209.2.2一个实例例3:求选修了课程C2的学生姓名

SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';AnIntroductiontoDatabaseSystem9.2.2一个实例例3:求选修了课程C2的学生姓名AnI219.2.2一个实例(续)假设1:外存: Student:1000条,SC:10000条,选修2号课程:50条假设2:一个内存块装元组:10个Student,或100个SC, 内存中一次可以存放:5块Student元组,1块SC元组和若干块连接结果元组假设3:读写速度:20块/秒假设4:连接方法:基于数据块的嵌套循环法

AnIntroductiontoDatabaseSystem9.2.2一个实例(续)假设1:外存:AnIntrod229.2.2一个实例(续)三种策略:Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))

Q2=ПSname(бSC.Cno='2'(StudentSC))Q2=ПSname(StudentбSC.Cno='2'(SC))

AnIntroductiontoDatabaseSystem9.2.2一个实例(续)三种策略:AnIntroduc23执行策略1Q1=ПSname(бStudent.Sno=SC.Sno

∧SC.Cno='2'

(Student×SC))

①Student×SC读取总块数=读Student表块数+读SC表遍数*每遍块数

=1000/10+(1000/(10×5))×(10000/100)=100+20×100=2100

读数据时间=2100/20=105秒AnIntroductiontoDatabaseSystem执行策略1Q1=ПSname(бStudent.Sno=S24不同的执行策略,考虑I/O时间

中间结果大小=1000*10000=107(1千万条元组)

写中间结果时间=10000000/10/20=50000秒

②б

读数据时间=50000秒

③П总时间=105+50000+50000秒=100105秒=27.8小时AnIntroductiontoDatabaseSystem不同的执行策略,考虑I/O时间

中间结果大小=1000259.2.2一个实例(续)策略2.Q2=ПSname(бSC.Cno='2'(StudentSC))

① 读取总块数=2100块 读数据时间=2100/20=105秒 中间结果大小=10000(减少1000倍) 写中间结果时间=10000/10/20=50秒

②б

读数据时间=50秒

③П

总时间=105+50+50秒=205秒=3.4分

AnIntroductiontoDatabaseSystem9.2.2一个实例(续)策略2.Q2=ПSname(269.2.2一个实例(续)策略3.Q3=ПSname(StudentбSC.Cno='2'(SC))

①б 读SC表总块数=10000/100=100块

读数据时间=100/20=5秒

中间结果大小=50条不必写入外存

② 读Student表总块数=1000/10=100块

读数据时间=100/20=5秒

③П

总时间=5+5秒=10秒AnIntroductiontoDatabaseSystem9.2.2一个实例(续)策略3.Q3=ПSname(S279.2.2一个实例(续)策略4.Q2=ПSname(StudentбSC.Cno='2'(SC))假设SC表在Cno上有索引,Student表在Sno上有索引

①б 读SC表索引= 读SC表总块数=50/100<1块 读数据时间

中间结果大小=50条不必写入外存AnIntroductiontoDatabaseSystem9.2.2一个实例(续)策略4.Q2=ПSname(S289.2.2一个实例(续)② 读Student表索引= 读Student表总块数=50/10=5块 读数据时间③П总时间<10秒AnIntroductiontoDatabaseSystem9.2.2一个实例(续)②AnIntroduction29第九章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第九章关系系统及其查询优化9.1关系数据库系统的查询处309.3代数优化9.3.1关系代数表达式等价变换规则9.3.2查询树的启发式优化AnIntroductiontoDatabaseSystem9.3代数优化9.3.1关系代数表达式等价变换规则An319.3.1关系代数等价变换规则关系代数表达式等价指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的上面的优化策略大部分都涉及到代数表达式的变换AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则关系代数表达式等价AnI32

9.3.1关系代数等价变换规则设E1、E2等是关系代数表达式,F是条件表达式

l.连接、笛卡尔积交换律 E1×E2≡E2×E1 E1E2≡E2E1 E1FE2≡E2FE1

AnIntroductiontoDatabaseSystem

9.3.1关系代数等价变换规则AnIntroduct339.3.1关系代数等价变换规则

2.连接、笛卡尔积的结合律(E1×E2)×E3≡E1×(E2×E3)(E1E2)E3≡E1(E2E3)(E1E2)E3≡E1(E2E3)

F

F

F

FAnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则

AnIntroducti349.3.1关系代数等价变换规则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}的子集AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则3.投影的串接定律AnI359.3.1关系代数等价变换规则4.选择的串接定律

бF1(б

F2(E))≡бF1∧F2(E)选择的串接律说明选择条件可以合并这样一次就可检查全部条件。AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则4.选择的串接定律AnI369.3.1关系代数等价变换规则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)))AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则5.选择与投影的交换律An379.3.1关系代数等价变换规则6.选择与笛卡尔积的交换律(1)假设:F中涉及的属性都是E1中的属性 бF(E1×E2)≡бF(E1)×E2

(2)假设:F=F1∧F2,并且F1只涉及E1中的属性,

F2只涉及E2中的属性 则由上面的等价变换规则1,4,6可推出: бF(E1×E2)≡бF1(E1)×бF2(E2)

AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则6.选择与笛卡尔积的交换律389.3.1关系代数等价变换规则(3)假设:F=F1∧F2,

F1只涉及E1中的属性,F2涉及E1和E2两者的属性 бF(E1×E2)≡бF2(бF1(E1)×E2)

它使部分选择在笛卡尔积前先做

AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则(3)假设:F=F1∧F399.3.1关系代数等价变换规则7.选择与并的交换 假设:E=E1∪E2,E1,E2有相同的属性名 бF(E1∪E2)≡бF(E1)∪бF(E2)

8.选择与差运算的交换 假设:E1与E2有相同的属性名 бF(E1-E2)≡бF(E1)-бF(E2)AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则7.选择与并的交换AnI409.3.1关系代数等价变换规则9.选择对自然连接的分配律 бF(E1E2)≡бF(E1)бF(E2)AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则9.选择对自然连接的分配律419.3.1关系代数等价变换规则10.投影与笛卡尔积的交换

假设:E1和E2是两个关系表达式,

A1,…,An是E1的属性,

B1,…,Bm是E2的属性πA1,A2,…,An,B1,B2,…,Bm(E1×E2)≡ πA1,A2,…,An(E1)×πB1,B2,…,Bm(E2)AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则10.投影与笛卡尔积的交换42关系代数等价变换规则(续)11.投影与并的交换

假设:E1和E2有相同的属性名 πA1,A2,…,An(E1∪E2)≡ πA1,A2,…,An(E1)∪πA1,A2,…,An(E2)AnIntroductiontoDatabaseSystem关系代数等价变换规则(续)11.投影与并的交换AnIn43小结1-2:连接、笛卡尔积的交换律、结合律3:合并或分解投影运算4:合并或分解选择运算5-9:选择运算与其他运算交换5,10,11:投影运算与其他运算交换AnIntroductiontoDatabaseSystem小结1-2:连接、笛卡尔积的交换律、结合律AnInt449.3代数优化9.3.1关系代数表达式等价变换规则9.3.2查询树的启发式优化AnIntroductiontoDatabaseSystem9.3代数优化9.3.1关系代数表达式等价变换规则An459.3.2查询树的启发式优化—典型启发式规则:选择运算应尽可能先做

目的:减小中间关系在执行连接操作前对关系适当进行预处理按连接属性排序在连接属性上建立索引

投影运算和选择运算同时做目的:避免重复扫描关系将投影运算与其前面或后面的双目运算结合目的:减少扫描关系的遍数AnIntroductiontoDatabaseSystem9.3.2查询树的启发式优化—典型启发式规则:选择运算应尽469.3.2查询树的启发式优化—典型启发式规则:某些选择运算+在其前面执行的笛卡尔积===>连接运算例:бStudent.Sno=SC.Sno(Student×SC)

StudentSC提取公共子表达式AnIntroductiontoDatabaseSystem9.3.2查询树的启发式优化—典型启发式规则:某些选择运算479.3.2查询树的启发式优化—算法算法:关系表达式的优化输入:一个关系表达式的语法树。输出:计算该表达式的程序。方法:(1)分解选择运算利用规则4把形如бF1∧F2∧…∧Fn(E)变换为бF1(бF2(…(бFn(E))…))AnIntroductiontoDatabaseSystem9.3.2查询树的启发式优化—算法算法:关系表达式的优化A48关系代数表达式的优化算法(续)(2)通过交换选择运算,将其尽可能移到叶端对每一个选择,利用规则4~9尽可能把它移到树的叶端。

(3)通过交换投影运算,将其尽可能移到叶端

对每一个投影利用规则3,10,11,5中的一般形式尽可能把它移向树的叶端。

AnIntroductiontoDatabaseSystem关系代数表达式的优化算法(续)(2)通过交换选择运算,将其49关系代数表达式的优化算法(续)(4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成利用规则3~5把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时执行,或在一次扫描中全部完成尽管这种变换似乎违背“投影尽可能早做”的原则,但这样做效率更高。

AnIntroductiontoDatabaseSystem关系代数表达式的优化算法(续)(4)合并串接的选择和投影,50关系代数表达式的优化算法(续)(5)对内结点分组把上述得到的语法树的内节点分组。每一双目运算(×,,∪,-)和它所有的直接祖先为一组(这些直接祖先是б,π运算)。如果其后代直到叶子全是单目运算,则也将它们并入该组,但当双目运算是笛卡尔积(×),而且其后的选择不能与它结合为等值连接时除外。把这些单目运算单独分为一组。

AnIntroductiontoDatabaseSystem关系代数表达式的优化算法(续)(5)对内结点分组AnIn51关系代数表达式的优化算法(续)(6)生成程序生成一个程序,每组结点的计算是程序中的一步。各步的顺序是任意的,只要保证任何一组的计算不会在它的后代组之前计算。

AnIntroductiontoDatabaseSystem关系代数表达式的优化算法(续)(6)生成程序AnIntr52优化的一般步骤1.把查询转换成某种内部表示2.代数优化:把语法树转换成标准(优化)形式3.物理优化:选择低层的存取路径4.生成查询计划,选择代价最小的AnIntroductiontoDatabaseSystem优化的一般步骤1.把查询转换成某种内部表示AnIntro53优化的一般步骤(续)(1)把查询转换成某种内部表示例:求选修了课程C2的学生姓名 SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';AnIntroductiontoDatabaseSystem优化的一般步骤(续)(1)把查询转换成某种内部表示AnI54(1)把查询转换成某种内部表示语法树结果project(Sname)

select(SC.Cno=2)

join(Student.Sno=SC.Sno)

StudentSCAnIntroductiontoDatabaseSystem(1)把查询转换成某种内部表示语法树结果project(S55关系代数语法树πSname

SC.Cno=’2’

Student.Sno=SC.S

×

StudentSCAnIntroductiontoDatabaseSystem关系代数语法树πSnameSC.Cno=’2’Stu56(2)代数优化利用优化算法把语法树转换成标准(优化)形式

πSname

Student.Sno=SC.Sno

SC.Cno=2

×

StudentSCAnIntroductiontoDatabaseSystem(2)代数优化利用优化算法把语法树转换成标准(优化)形式πS57第九章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第九章关系系统及其查询优化9.1关系数据库系统的查询处589.4物理优化1、基于规则的启发式优化2、基于代价估算的优化3、两者结合的优化方法AnIntroductiontoDatabaseSystem9.4物理优化1、基于规则的启发式优化AnIntrodu599.4物理优化9.4.1基于启发式规则的存取路径选择优化9.4.2基于代价的优化AnIntroductiontoDatabaseSystem9.4物理优化9.4.1基于启发式规则的存取路径选择优化609.4.1基于启发式规则的存取路径选择优化一、选择操作的启发式规则二、连接操作的启发式规则 P273AnIntroductiontoDatabaseSystem9.4.1基于启发式规则的存取路径选择优化AnIntrod619.4物理优化9.4.1基于启发式规则的存取路径选择优化9.4.2基于代价的优化AnIntroductiontoDatabaseSystem9.4物理优化9.4.1基于启发式规则的存取路径选择优化629.4.2基于代价的优化统计信息表的元组数、元组长度、占用的块数等等属性列不同值的个数、选择率,最大最小值索引的层数、不同索引值的个数、索引叶结点数等代价估算示例全表扫描算法的代价估算公式索引扫描算法的代价估算公式嵌套循环连接算法的代价估算公式排序-合并连接算法的代价估算公式AnIntroductiontoDatabaseSystem9.4.2基于代价的优化统计信息AnIntroducti63第九章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第九章关系系统及其查询优化9.1关系数据库系统的查询处649.3小结查询处理是核心、优化是关键查询优化的必要性代数优化及其启发式规则(查询树)物理优化(存取路径启发式规则、代价优化)AnIntroductiontoDatabaseSystem9.3小结查询处理是核心、优化是关键AnIntroduc65

下课了。。。休息一会儿。。。攀AnIntroductiontoDatabaseSystem下课了。。。休息一会儿。。。攀AnIntro66信息科学与技术学院计算机系数据库系统概论AnIntroductiontoDatabaseSystem第九章关系查询处理和查询优化AnIntroductiontoDatabaseSystem信息科学与技术学院计算机系数据库系统概论AnIntrodu67第九章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第九章关系系统及其查询优化9.1关系数据库系统的查询处689.1关系数据库系统的查询处理9.1.1查询处理步骤9.1.2实现查询操作的算法示例AnIntroductiontoDatabaseSystem9.1关系数据库系统的查询处理9.1.1查询处理步骤An699.1.1查询处理步骤查询分析词法/语法/语义分析符号名转换查询检查语义检查安全性检查完整性检查查询优化代数优化物理优化查询执行查询计划生成代码生成AnIntroductiontoDatabaseSystem9.1.1查询处理步骤查询分析AnIntroductio709.1关系数据库系统的查询处理9.1.1查询处理步骤9.1.2实现查询操作的算法示例AnIntroductiontoDatabaseSystem9.1关系数据库系统的查询处理9.1.1查询处理步骤An719.1.2实现查询操作的算法示例一选择操作的实现二连接操作的实现AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例一选择操作的实现AnI729.1.2实现查询操作的算法示例一选择操作的实现1、简单的全表扫描方法2、索引(或散列)扫描方法[例1]Select*fromstudent where<条件表达式>表达式情况:C1:无条件;C2:Sno=‘200215121’;C3:Sage>20;C4:Sdept=‘CS’ANDSage>20;AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例一选择操作的实现AnI739.1.2实现查询操作的算法示例1、简单的全表扫描方法AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例1、简单的全表扫描方法An749.1.2实现查询操作的算法示例2、索引(或散列)扫描方法[例1-C2]Sno上有索引[例1-C3]Sage上有B+树索引[例1-C4]Sdept和Sage上都有索引AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例2、索引(或散列)扫描方法759.1.2实现查询操作的算法示例二连接操作的实现1、嵌套循环方法(nestedloop)2、排序-合并方法(sort-mergejoin)3、索引连接(IndexJoin)方法4、HashJoin方法[例2]Select*fromstudent,sc wherestudent.sno=sc.sno;AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例二连接操作的实现AnI769.1.2实现查询操作的算法示例1、嵌套循环方法AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例1、嵌套循环方法AnIn779.1.2实现查询操作的算法示例2、排序合并方法20021512120021512220021512320021512420021512122002151213200215121120021512222002151223200215123520021512332002151231SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例2、排序合并方法20021789.1.2实现查询操作的算法示例3、索引连接方法20021512320021512220021512120021512420021512122002151233200215123120021512122002151223200215121520021512232002151231SNOSNOCNO索引表AnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例3、索引连接方法20021799.1.2实现查询操作的算法示例3、HashJoin方法20021512320021512220021512120021512412002151233200215122520021512132002151222200215121120021512332002151232200215121SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2实现查询操作的算法示例3、HashJoin方法80第四章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第四章关系系统及其查询优化9.1关系数据库系统的查询处819.2关系数据库系统的查询优化查询优化的必要性查询优化极大地影响RDBMS的性能。

查询优化的可能性关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。AnIntroductiontoDatabaseSystem9.2关系数据库系统的查询优化查询优化的必要性AnIntr829.2.1查询优化概述关系系统的查询优化既是RDBMS的关键技术又是关系系统的优点所在;大大减轻了用户的负担。AnIntroductiontoDatabaseSystem9.2.1查询优化概述关系系统的查询优化既是RDBMS的关839.2.1查询优化概述由DBMS进行查询优化的好处用户不必考虑如何最好地表达查询以获得较好的效率系统可以比用户程序的优化做得更好 (1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息

AnIntroductiontoDatabaseSystem9.2.1查询优化概述由DBMS进行查询优化的好处AnI84由DBMS进行查询优化的好处(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。 在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。(3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术AnIntroductiontoDatabaseSystem由DBMS进行查询优化的好处(2)如果数据库的物理统计信息改859.2.1查询优化概述集中式数据库查询开销:I/O+CPU+内存分布式数据库查询开销:I/O+CPU+内存+通信代价查询优化的总目标选择有效策略,求得给定关系表达式的值,使得查询代价较小AnIntroductiontoDatabaseSystem9.2.1查询优化概述集中式数据库查询开销:AnIntr869.2.2一个实例例3:求选修了课程C2的学生姓名

SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';AnIntroductiontoDatabaseSystem9.2.2一个实例例3:求选修了课程C2的学生姓名AnI879.2.2一个实例(续)假设1:外存: Student:1000条,SC:10000条,选修2号课程:50条假设2:一个内存块装元组:10个Student,或100个SC, 内存中一次可以存放:5块Student元组,1块SC元组和若干块连接结果元组假设3:读写速度:20块/秒假设4:连接方法:基于数据块的嵌套循环法

AnIntroductiontoDatabaseSystem9.2.2一个实例(续)假设1:外存:AnIntrod889.2.2一个实例(续)三种策略:Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))

Q2=ПSname(бSC.Cno='2'(StudentSC))Q2=ПSname(StudentбSC.Cno='2'(SC))

AnIntroductiontoDatabaseSystem9.2.2一个实例(续)三种策略:AnIntroduc89执行策略1Q1=ПSname(бStudent.Sno=SC.Sno

∧SC.Cno='2'

(Student×SC))

①Student×SC读取总块数=读Student表块数+读SC表遍数*每遍块数

=1000/10+(1000/(10×5))×(10000/100)=100+20×100=2100

读数据时间=2100/20=105秒AnIntroductiontoDatabaseSystem执行策略1Q1=ПSname(бStudent.Sno=S90不同的执行策略,考虑I/O时间

中间结果大小=1000*10000=107(1千万条元组)

写中间结果时间=10000000/10/20=50000秒

②б

读数据时间=50000秒

③П总时间=105+50000+50000秒=100105秒=27.8小时AnIntroductiontoDatabaseSystem不同的执行策略,考虑I/O时间

中间结果大小=1000919.2.2一个实例(续)策略2.Q2=ПSname(бSC.Cno='2'(StudentSC))

① 读取总块数=2100块 读数据时间=2100/20=105秒 中间结果大小=10000(减少1000倍) 写中间结果时间=10000/10/20=50秒

②б

读数据时间=50秒

③П

总时间=105+50+50秒=205秒=3.4分

AnIntroductiontoDatabaseSystem9.2.2一个实例(续)策略2.Q2=ПSname(929.2.2一个实例(续)策略3.Q3=ПSname(StudentбSC.Cno='2'(SC))

①б 读SC表总块数=10000/100=100块

读数据时间=100/20=5秒

中间结果大小=50条不必写入外存

② 读Student表总块数=1000/10=100块

读数据时间=100/20=5秒

③П

总时间=5+5秒=10秒AnIntroductiontoDatabaseSystem9.2.2一个实例(续)策略3.Q3=ПSname(S939.2.2一个实例(续)策略4.Q2=ПSname(StudentбSC.Cno='2'(SC))假设SC表在Cno上有索引,Student表在Sno上有索引

①б 读SC表索引= 读SC表总块数=50/100<1块 读数据时间

中间结果大小=50条不必写入外存AnIntroductiontoDatabaseSystem9.2.2一个实例(续)策略4.Q2=ПSname(S949.2.2一个实例(续)② 读Student表索引= 读Student表总块数=50/10=5块 读数据时间③П总时间<10秒AnIntroductiontoDatabaseSystem9.2.2一个实例(续)②AnIntroduction95第九章

关系系统及其查询优化9.1关系数据库系统的查询处理9.2关系数据库系统的查询优化9.3代数优化9.4物理优化9.3小结AnIntroductiontoDatabaseSystem第九章关系系统及其查询优化9.1关系数据库系统的查询处969.3代数优化9.3.1关系代数表达式等价变换规则9.3.2查询树的启发式优化AnIntroductiontoDatabaseSystem9.3代数优化9.3.1关系代数表达式等价变换规则An979.3.1关系代数等价变换规则关系代数表达式等价指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的上面的优化策略大部分都涉及到代数表达式的变换AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则关系代数表达式等价AnI98

9.3.1关系代数等价变换规则设E1、E2等是关系代数表达式,F是条件表达式

l.连接、笛卡尔积交换律 E1×E2≡E2×E1 E1E2≡E2E1 E1FE2≡E2FE1

AnIntroductiontoDatabaseSystem

9.3.1关系代数等价变换规则AnIntroduct999.3.1关系代数等价变换规则

2.连接、笛卡尔积的结合律(E1×E2)×E3≡E1×(E2×E3)(E1E2)E3≡E1(E2E3)(E1E2)E3≡E1(E2E3)

F

F

F

FAnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则

AnIntroducti1009.3.1关系代数等价变换规则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}的子集AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则3.投影的串接定律AnI1019.3.1关系代数等价变换规则4.选择的串接定律

бF1(б

F2(E))≡бF1∧F2(E)选择的串接律说明选择条件可以合并这样一次就可检查全部条件。AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则4.选择的串接定律AnI1029.3.1关系代数等价变换规则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)))AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则5.选择与投影的交换律An1039.3.1关系代数等价变换规则6.选择与笛卡尔积的交换律(1)假设:F中涉及的属性都是E1中的属性 бF(E1×E2)≡бF(E1)×E2

(2)假设:F=F1∧F2,并且F1只涉及E1中的属性,

F2只涉及E2中的属性 则由上面的等价变换规则1,4,6可推出: бF(E1×E2)≡бF1(E1)×бF2(E2)

AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则6.选择与笛卡尔积的交换律1049.3.1关系代数等价变换规则(3)假设:F=F1∧F2,

F1只涉及E1中的属性,F2涉及E1和E2两者的属性 бF(E1×E2)≡бF2(бF1(E1)×E2)

它使部分选择在笛卡尔积前先做

AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则(3)假设:F=F1∧F1059.3.1关系代数等价变换规则7.选择与并的交换 假设:E=E1∪E2,E1,E2有相同的属性名 бF(E1∪E2)≡бF(E1)∪бF(E2)

8.选择与差运算的交换 假设:E1与E2有相同的属性名 бF(E1-E2)≡бF(E1)-бF(E2)AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则7.选择与并的交换AnI1069.3.1关系代数等价变换规则9.选择对自然连接的分配律 бF(E1E2)≡бF(E1)бF(E2)AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则9.选择对自然连接的分配律1079.3.1关系代数等价变换规则10.投影与笛卡尔积的交换

假设:E1和E2是两个关系表达式,

A1,…,An是E1的属性,

B1,…,Bm是E2的属性πA1,A2,…,An,B1,B2,…,Bm(E1×E2)≡ πA1,A2,…,An(E1)×πB1,B2,…,Bm(E2)AnIntroductiontoDatabaseSystem9.3.1关系代数等价变换规则10.投影与笛卡尔积的交换108关系代数等价变换规则(续)11.投影与并的交换

假设:E1和E2有相同的属性名 πA1,A2,…,An(E1∪E2)≡ πA1,A2,…,An(E1)∪πA1,A2,…,An(E2)AnIntroductiontoDatabaseSystem关系代数等价变换规则(续)11.投影与并的交换AnIn109小结1-2:连接、笛卡尔积的交换律、结合律3:合并或分解投影运算4:合并或分解选择运算5-9:选择运算与其他运算交换5,10,11:投影运算与其他运算交换AnIntroductiontoDatabaseSystem小结1-2:连接、笛卡尔积的交换律、结合律AnInt1109.3代数优化9.3.1关系代数表达式等价变换规则9.3.2查询树的启发式优化AnIntroductiontoDatabaseSystem9.3代数优化9.3.1关系代数表达式等价变换规则An1119.3.2查询树的启发式优化—典型启发式规则:选择运算应尽可能先做

目的:减小中间关系在执行连接操作前对关系适当进行预处理按连接属性排序在连接属性上建立索引

投影运算和选择运算同时做目的:避免重复扫描关系将投影运算与其前面或后面的双目运算结合目的:减少扫描关系的遍数AnIntroductiontoDatabaseSystem9.3.2查询树的启发式优化—典型启发式规则:选择运算应尽1129.3.2查询树的启发式优化—典型启发式规则:某些选择运算+在其前面执行的笛卡尔积===>连接运算例:бStudent.Sno=SC.Sno(Student×SC)

StudentSC提取公共子表达式AnIntroductiontoDatabaseSystem9.3.2查询树的启发式优化—典型启发式规则:某些选择运算1139.3.2查询树的启发式优化—算法算法:关系表达式的优化输入:一个关系表达式的语法树。输出:计算该表达式的程序。方法:(1)分解选择运算利用规则4把形如бF1∧F2∧…∧Fn(E)变换为бF1(бF2(…(бFn(E))…))AnIntroductiontoDatabaseSystem9.3.2查询树的启发式优化—算法算法:关系表达式的优化A114关系代数表达式的优化算法(续)(2)通过交换选择运算,将其尽可能移到叶端对每一个选择,利用规则4~9尽可能把它移到树的叶端。

(3)通过交换投影运算,将其尽可能移到叶端

对每一个投影利用规则3,10,11,5中的一般形式尽可能把它移向树的叶端。

AnIntroductiontoDatabaseSystem关系代数表达式的优化算法(续)(2)通过交换选择运算,将其115关系代数表达式的优化算法(续)(4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成利用规则3~5把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时执行,或在一次扫描中全部完成尽管这种变换似乎违背“投影尽可能早做”的原则,但这样做效

温馨提示

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

评论

0/150

提交评论