第三章查询处理步骤_第1页
第三章查询处理步骤_第2页
第三章查询处理步骤_第3页
第三章查询处理步骤_第4页
第三章查询处理步骤_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

查询处理步骤

查询分析首先,对查询语句进行扫描、词法分析和语法分析。查询检查根据数据字典对合法的查询语句进行语义检查,即检查语句中的数据库对象是否存在和是否有效。RDBMS一般用查询树(querytree)或称为语法分析树,来表示扩展的关系代数表达式。查询优化查询优化就是选择一个高效执行的查询处理策略。按照优化的层次,查询优化可分为代数优化和物理优化。查询执行依据优化器得到的执行策略生成查询计划,由代码生成器生成执行这个查询计划的代码。查询优化概述查询优化的必要性查询优化极大地影响RDBMS的性能。查询优化的可能性关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。一、由DBMS进行查询优化的好处二、查询优化目标三、实际系统的查询优化步骤四、代价模型由DBMS进行查询优化的好处好处一:用户不必选择存取路径,不必考虑如何可以最好地表达查询以获得较好的效率;

好处二:系统可以比用户程序的优化做得更好。(1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息;(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化,以选择相适应的执行计划。而在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。(3)优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性;(4)优化器中包括了很多复杂的优化技术,自动优化使所有人拥有这些技术。查询优化目标查询优化的总目标

选择有效策略,求得给定关系表达式的值,使得查询代价最小(实际上是较小)。实际系统的查询优化步骤实际系统的查询优化步骤1.将查询转换成某种内部表示,通常是语法树;2.根据一定的等价变换规则把语法树转换成标准(优化)形式;3.选择低层的操作算法,对于语法树中的每一个操作:计算各种执行算法的执行代价选择代价小的执行算法4.生成查询计划(查询执行方案)查询计划是由一系列内部操作组成的。

代价模型集中式数据库单用户系统 总代价=I/O代价+CPU代价多用户系统 总代价=I/O代价+CPU代价+内存代价分布式数据库

总代价=I/O代价+CPU代价+内存代价+通信代价

执行策略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秒执行策略1(续)

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

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

②б(选择操作)

读数据时间=50000秒

③П(投影操作)总时间=105+50000+50000秒=100105秒=27.8小时执行策略2Q2=ПSname(бSC.Cno='2'(StudentSC))

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

②б(读取中间文件块,做选择操作)

读数据时间=50秒

③П(把上一步结果投影输出)总时间=105+50+50秒=205秒=3.4分

执行策略3Q3=ПSname(StudentбSC.Cno='2'(SC))

①б(先对SC做选择操作) 读SC表总块数=10000/100=100块

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

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

②(读Student,把读入的元组与内存中的SC元组连接) 读Student表总块数=1000/10=100块

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

③П(将连接结果投影输出)总时间=5+5秒=10秒执行策略4Q4=ПSname(StudentбSC.Cno='2'(SC))假设SC表在Cno上有索引,Student表在Sno上有索引①б(若SC表在Cno上有索引,则选择读取SC表中Cno=‘2’的50个元组即可)中间结果大小=50条不必写入外存。②(若Student表在Sno上有索引,则仅读取SC表中满足条件的50个元组进行连接操作即可)

③П(将结果投影输出)总时间<10秒查询优化的一般准则

选择运算应尽可能先做

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

投影运算和选择运算同时做目的:避免重复扫描关系将投影运算与其前面或后面的双目运算结合目的:减少扫描关系的遍数查询优化的一般准则(续)某些选择运算+在其前面执行的笛卡尔积===>连接运算

例:бStudent.Sno=SC.Sno(Student×SC)

StudentSC提取公共子表达式举例SELECTStudent.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno='2';查询树结果project(Sname)

select(SC.Cno=

2

)

join(Student.Sno=SC.Sno)

StudentSC举例(续)关系代数语法

温馨提示

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

评论

0/150

提交评论