数据库技术与应用课件第四章关系数据库查询优化.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库技术与应用课件第四章关系数据库查询优化.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 应用 课件 第四 关系 数据库 查询 优化
- 资源描述:
-
1、1第四章 关系数据库查询优化2 学习内容4.1 查询处理概述4.2 基本运算实现举例4.3 查询优化的选择执行4.4 sql语句优化参考:B3第十二章3 学习目标了解查询处理的过程了解查询优化的步骤掌握关系代数等价变换规则了解启发式优化的方法44.1 查询处理概述4.1.1 查询处理的定义4.1.2 查询处理的执行步骤4.1.3 相关基本概念54.1.1 查询处理的定义1.定义2.包括的主要内容 表达式 转换 执行3.输入、输出64.1.2 查询处理的执行步骤 语法分析与翻译 优化 执行语法分析与翻译语法分析与翻译关系代数表达式关系代数表达式执行计划执行计划优化器优化器查询语句查询语句执行引擎
2、执行引擎查询结果查询结果有关数据的统计值有关数据的统计值数据数据74.1.3 相关基本概念查询代价 查询处理对各种资源的使用情况 磁盘存取(简化为磁盘块传送数)CPU时间 通信开销 内存开销COSTCPU(PLAN)COSTI/O(PLAN)PLAN19.2 CPU seconds103 readsPLAN21.7CPU seconds890 reads84.1.3 相关基本概念(续)部分用于估计代价的目录信息 有关关系的统计信息 nr:关系R中的元组数目 br:含有关系R的元组的块数目 sr:关系R中一个元组的大小 fr:关系R的块因子,即一个块中能存放的关系R的元组数若假定关系R的元组物理
3、上存于同一文件中,则:br =nr/fr 一个重要的影响因素:主存中缓冲区的大小M 最好的情形 最坏的情形94.1.3 相关基本概念(续)查询优化 为关系代数表达式的计算选择最有效的查询计划的过程。查询执行计划 用于计算一个查询的原语序列。执行原语 加了“如何执行”注释的关系代数运算。查询优化的过程 代数优化 物理优化 详细策略的选择优化器104.1.4 查询优化概述 例:求选修了2号课程的学生姓名 SELECT Student.SnameFROM Student,SCWHERE Student.Sno=SC.SnoAND SC.Cno=2;1 查询优化的必要性(续)11假设1:外存:Stud
4、ent:1000条,SC:10000条,选修2号课程:50条 一个硬盘块放10个student或者100个SC假设2:一次I/O交换元组:10个Student,或100个SC,内存中一次可以存放:5块Student元组(即50个Student),1块SC元组(即100个SC)和若干块连接结果元组假设3:读写速度:20块/秒假设4:连接方法:基于数据块的嵌套循环法4.1.4 查询优化概述 1 查询优化的必要性(续)124.1.4 查询优化概述1 查询优化的必要性(续)几种不同的实现方法:1)Q1 Sname(Student.Sno=SC.Sno SC.Cno=2(StudentSC)2)2 na
5、me(SC.Cno=2(Student SC)3)3 Sname(Student SC.Cno=2(SC)131 Q1 S n a m e(S t u d e n t.S n o=S C.S n o S C.C n o=2 (StudentSC)StudentSC 读取总块数=读Student表块数+读SC表遍数 *每遍块数(读SC表遍数=Student表的总元组数/在内存中的元组数)=1000/10+(1000/(105)(10000/100)=100+20100=2100 读数据时间=2100/20=105秒1 查询优化的必要性(续)4.1.4查询优化概述 14中间结果大小=1000*10
6、000=107 (1千万条元组)写中间结果时间=10000000/10/20=50000秒(设每块能装10个中间结果元组)读数据时间=50000秒 总时间=1055000050000秒=100105秒 =27.8小时 4.1.4查询优化概述 1 查询优化的必要性(续)152.2 name(SC.Cno=2(Student SC)读取总块数=2100块(Q1的结果)读数据时间=2100/20=105秒 因为只有SC只有10000条元组,故等值连接的结果,即:中间结果大小=10000 (减少1000倍)写中间结果时间=10000/10/20=50秒 读数据时间=50秒 总时间1055050秒205
7、秒=3.4分(减少了中间结果)4.1.4查询优化概述 1 查询优化的必要性(续)163.3 Sname(Student SC.Cno=2(SC)读SC表总块数=10000/100=100块读数据时间=100/20=5秒 中间结果大小=50条 不必写入外存 读Student表总块数=1000/10=100块读数据时间=100/20=5秒 总时间55秒10秒(减少中间结果,且全部在内存)1 查询优化的必要性(续)4.1.4查询优化概述 174.4 name(Student SC.Cno=2(SC)假设SC表在Cno上有索引,Student表在Sno上有索引 读SC表索引=(发现2号课程只有50条元
8、组)读SC表总块数=50/1001块读数据时间:1/20=0.5 中间结果大小=50条 不必写入外存1 查询优化的必要性(续)4.1.4查询优化概述 18 读Student表索引=(根据索引发现只有50个学生)读Student表总块数=50/10=5块读数据时间:5/20=0.5秒 总时间12秒(不必遍历所有的元组记录)1 查询优化的必要性(续)4.1.4查询优化概述 19 用户不必考虑如何最好地表达查询以获得较好的效率。关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。系统可以比用户程序的优化做得更好。2 查询优化的可能性4.1.4查询优化概述 20StudentSC(做SC
9、Student)读取总块数=读SC表块数+读Student表遍数 *每遍块数(读Student表遍数=SC表的总元组数/在内存中的元组数)=10000/100+(10000/(1001)(1000/10)=100+100100=10100 读数据时间=10100/20=505秒2 查询优化的可能性(续)4.1.4查询优化概述 214.1.4查询优化概述 2 查询优化的可能性(续)(1)优化器可以从数据字典中获取许多信息(包括统计信息和索引信息),而用户程序则难以获得这些信息。(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重
10、写程序在实际应用中往往是不太可能的。(3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术22 查询优化的总目标 选择有效策略,求得给定关系表达式的值4.1.4查询优化概述 3 查询优化的目标23代价模型:集中式数据库 单用户系统总代价=I/O代价+CPU代价 多用户系统总代价=I/O代价+CPU代价+内存代价 分布式数据库 总代价=I/O代价+CPU代价+内存代价+通信代价 4.1.4查询优化概述 3 查询优化的目标(续)244.2 基本运算实现举例1.运算特点 每一个基本的代数运算都有多种不同的实现算法 适用于不同的情况 执行
11、代价不同2.选择运算的实现3.连接运算的实现254.2 基本运算实现举例(续)2.选择运算的实现 全表扫描 方法:依次访问表的每一个块,对于每一个元组,测试它是否满足选择条件。代价:E=br 索引扫描 条件:表在选择条件的属性上建有索引。方法:访问索引,根据索引项的指示去访问数据元组。代价:264.2 基本运算实现举例(续)3.连接运算的实现 嵌套循环连接 块嵌套循环连接 索引嵌套循环连接 排序-归并连接 散列连接274.2 基本运算实现举例(续)3.连接运算的实现 嵌套循环连接 for each元组tr in R do begin for each元组ts in S do begin 测试元
展开阅读全文