db-chapter09查询优化.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《db-chapter09查询优化.ppt》由用户(hwpkd79526)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- db_chapter09 查询 优化
- 资源描述:
-
1、普通高等教育十五规划教材普通高等教育十五规划教材数据库系统概论数据库系统概论主讲:张中军主讲:张中军第第9章章 查询处理与优化查询处理与优化 2023年4月29日21时15分数据库系统概论3查询处理与优化查询处理与优化 n如何以如何以有效的方式处理用户查询有效的方式处理用户查询是是RDBMS有效实现的关键有效实现的关键问题之一问题之一n数据库的更新运算数据库的更新运算要么是简单要么是简单的(如插入一个元组),的(如插入一个元组),要么与一个复杂的更新条件相关联要么与一个复杂的更新条件相关联(如删除满足某些条(如删除满足某些条件的元组)件的元组)n这些复杂的更新首先需要这些复杂的更新首先需要找到
2、找到要更新的元组,然后才能要更新的元组,然后才能进行进行更新更新。因此,只有能够有效地处理查询,才能有效。因此,只有能够有效地处理查询,才能有效地实现更新地实现更新n查询处理的中心任务是把使用诸如查询处理的中心任务是把使用诸如SQL这样的说明性语言这样的说明性语言表达的用户查询表达的用户查询转换转换成一系列能够在物理文件上成一系列能够在物理文件上执行执行的操的操作,并执行这些操作得到查询结果作,并执行这些操作得到查询结果n查询优化是查询处理的关键步骤,它从众多的查询执行方查询优化是查询处理的关键步骤,它从众多的查询执行方案中选择最有效的执行方案。案中选择最有效的执行方案。2023年4月29日2
3、1时15分数据库系统概论4第第9章章 查询处理与优化查询处理与优化n9.1 查询处理概述查询处理概述n9.2 选择运算的实现选择运算的实现n9.3 连接运算的实现连接运算的实现n9.4 查询优化概述查询优化概述n9.5 代数优化代数优化n9.6 物理优化物理优化n9.7 小结小结2023年4月29日21时15分数据库系统概论5查询处理概述查询处理概述 n查询处理的过程查询处理的过程 查询查询语法分析语法分析与翻译器与翻译器查询的内部表示查询的内部表示优化器优化器查询执行计划查询执行计划执行引擎执行引擎查询结果查询结果数据库数据库图图9.1 查询处理步骤查询处理步骤元数据元数据2023年4月29
4、日21时15分数据库系统概论6查询处理概述查询处理概述(续续)n1.语法分析与翻译语法分析与翻译n进行词法分析、语法分析和语义分析,并将查询翻译成内进行词法分析、语法分析和语义分析,并将查询翻译成内部表示部表示 n词法分析词法分析从查询语句中识别出语言符号,如从查询语句中识别出语言符号,如SQL的保留的保留字、关系名、属性名和各种运算符等其他符号字、关系名、属性名和各种运算符等其他符号n语法分析语法分析检查用户查询语句的语法格式,确保查询语句检查用户查询语句的语法格式,确保查询语句语法上的正确性语法上的正确性n语义分析语义分析可以与语法分析同时进行,将查询转换成更适可以与语法分析同时进行,将查
5、询转换成更适合进一步处理的内部表示合进一步处理的内部表示 n查询的内部表示用查询的内部表示用查询树查询树(语法分析树)或(语法分析树)或关系代数表达关系代数表达式式n涉及视图的查询还需要先将定义视图的查询表达式转换涉及视图的查询还需要先将定义视图的查询表达式转换成内部表示成内部表示2023年4月29日21时15分数据库系统概论7查询处理概述查询处理概述(续续)n例例9.1 查询查询SELECT SnameFROM Suppliers,SPWHERE Suppliers.Sno=SP.Sno AND Pno=P001;n找出提供了找出提供了P001号零件的供应商名称。它将被转换成图号零件的供应商
6、名称。它将被转换成图9.2所示的语所示的语法树,或者转换成如下关系代数表达式:法树,或者转换成如下关系代数表达式:Q1:Sname(Suppliers.Sno=SP.Sno Pno=P001(SuppliersSP)Suppliers.Sno=SP.Sno Pno=P001 SuppliersSP Sname图图9.2 一棵语法分析树一棵语法分析树2023年4月29日21时15分数据库系统概论8查询处理概述查询处理概述(续续)n语义分析中包含了对查询语句合法性的检查,即查询检查语义分析中包含了对查询语句合法性的检查,即查询检查n根据数据字典对合法的查询语句进行语义检查根据数据字典对合法的查询语
7、句进行语义检查 n根据数据字典中的根据数据字典中的用户权限用户权限和和完整性约束定义完整性约束定义对用户对用户的存取权限进行检查的存取权限进行检查 n检查通过后把检查通过后把SQL查询语句转换成等价的关系代数表查询语句转换成等价的关系代数表达式达式 nRDBMS一般都用一般都用查询树查询树(语法分析树语法分析树)来表示扩展的关来表示扩展的关系代数表达式系代数表达式 n把数据库对象的外部名称转换为内部表示把数据库对象的外部名称转换为内部表示 2023年4月29日21时15分数据库系统概论9查询处理概述查询处理概述(续续)n2.查询优化查询优化n对于一个给定的查询,通常由多种可能的对于一个给定的查
8、询,通常由多种可能的执行策略执行策略n例如,例例如,例9.1的查询也可以用如下关系代数表达式计算:的查询也可以用如下关系代数表达式计算:Q2:Sname(Pno=P001(Suppliers SP)Q3:Sname(Suppliers Pno=P001(SP)n每个关系代数表达式的每个基本运算也可以有多种不同的每个关系代数表达式的每个基本运算也可以有多种不同的实现算法实现算法n一个查询执行计划包括计算查询的关系代数表达式和其中一个查询执行计划包括计算查询的关系代数表达式和其中每个基本运算的实现算法每个基本运算的实现算法2023年4月29日21时15分数据库系统概论10查询处理概述查询处理概述(
9、续续)n查询优化就是查询优化就是从多种可能的查询执行方案中选择一种最有从多种可能的查询执行方案中选择一种最有效的查询执行计划的过程效的查询执行计划的过程 n对于相同的查询,不同的查询执行计划的时间开销可能相对于相同的查询,不同的查询执行计划的时间开销可能相差几个数量级。差几个数量级。n例如,使用例如,使用Q1计算例计算例9.1的查询的的查询的I/O开销大约是使用开销大约是使用Q3的的2000倍倍n代数优化代数优化vs.物理优化物理优化n代数优化代数优化旨在找到一个与给定的查询表达式等价、但执旨在找到一个与给定的查询表达式等价、但执行起来更加有效的关系代数表达式行起来更加有效的关系代数表达式n物
10、理优化物理优化旨在为关系代数表达式选择一个详细的策略,旨在为关系代数表达式选择一个详细的策略,包括为特定的操作选择可用的算法,选择可用的索引等包括为特定的操作选择可用的算法,选择可用的索引等 2023年4月29日21时15分数据库系统概论11查询处理概述查询处理概述(续续)n基于规则的优化基于规则的优化vs.基于代价的优化基于代价的优化n基于规则的优化根据某些启发式规则,通过关系代数的基于规则的优化根据某些启发式规则,通过关系代数的等价变换等价变换,得到更有效的关系代数表达式得到更有效的关系代数表达式;或者根据某;或者根据某些启发式规则选择实现基本运算的算法些启发式规则选择实现基本运算的算法n
11、基于代价的优化利用元数据中的统计信息,基于代价的优化利用元数据中的统计信息,估计不同的估计不同的查询执行计划的开销查询执行计划的开销,从中,从中选择最优选择最优方案方案 2023年4月29日21时15分数据库系统概论12查询处理概述查询处理概述(续续)n3.查询执行查询执行n执行引擎依据优化器得到的查询执行计划执行引擎依据优化器得到的查询执行计划生成执行查询生成执行查询计划的代码计划的代码,执行该代码产生查询结果执行该代码产生查询结果,并以适当的形,并以适当的形式提交用户。式提交用户。n查询执行之前还要进行安全性检查,确保执行查询的用查询执行之前还要进行安全性检查,确保执行查询的用户必须具有相
12、应的访问权限。任何违反安全性限制的查户必须具有相应的访问权限。任何违反安全性限制的查询都将被拒绝询都将被拒绝n对于数据库的更新操作,除了安全性检查之外,还需要对于数据库的更新操作,除了安全性检查之外,还需要进行完整性检查进行完整性检查 2023年4月29日21时15分数据库系统概论13查询处理概述查询处理概述(续续)n4.查询代价的估计查询代价的估计n为了优化查询,优化器必须知道每个基本运算的代价,为了优化查询,优化器必须知道每个基本运算的代价,进而估计查询执行计划的代价进而估计查询执行计划的代价n精确地估计代价比较困难,但是可以粗略的估计。精确地估计代价比较困难,但是可以粗略的估计。n查询代
13、价包括查询代价包括CPU代价代价、I/O代价代价和和内存代价内存代价n分布式数据库系统或并行系统中,查询代价还包括分布式数据库系统或并行系统中,查询代价还包括通信通信代价代价。n本章,我们只考虑集中式系统本章,我们只考虑集中式系统n内存代价内存代价n用查询处理所需的内存量度量用查询处理所需的内存量度量 n最坏的情况:内存缓冲区只能容纳数目不多的数据块最坏的情况:内存缓冲区只能容纳数目不多的数据块大约每个关系一块或几块大约每个关系一块或几块 2023年4月29日21时15分数据库系统概论14查询处理概述查询处理概述(续续)nCPU代价代价n用查询所需的用查询所需的CPU时间度量时间度量n磁盘存取
14、比内存操作慢,并且随着硬件技术的发展,磁盘存取比内存操作慢,并且随着硬件技术的发展,CPU速度的提高也比磁盘速度的提高快得多速度的提高也比磁盘速度的提高快得多n因此磁盘因此磁盘I/O一直是制约查询处理速度提高的瓶颈一直是制约查询处理速度提高的瓶颈n通常,通常,I/O代价被认为是估计查询处理代价的合理度量代价被认为是估计查询处理代价的合理度量 nI/O代价包括:磁盘寻道时间、旋转延迟时间和实际的数据代价包括:磁盘寻道时间、旋转延迟时间和实际的数据传输时间传输时间 n磁盘寻道时间和旋转延迟时间依赖于磁头的当前位置,磁盘寻道时间和旋转延迟时间依赖于磁头的当前位置,难以精确估计难以精确估计n可以假定每
15、个磁盘块的读写大致需要相同的平均寻道可以假定每个磁盘块的读写大致需要相同的平均寻道时间和旋转延迟时间时间和旋转延迟时间nI/O代价可以用磁盘读写块数近似地估计代价可以用磁盘读写块数近似地估计 2023年4月29日21时15分数据库系统概论15查询处理概述查询处理概述(续续)n5.表达式计算代价评估的统计信息表达式计算代价评估的统计信息nDBMS的数据字典中存储并维护了关于数据库关系的如下统计信息的数据字典中存储并维护了关于数据库关系的如下统计信息 nnr:关系:关系r的元组数。的元组数。nbr:包含关系包含关系r的块数。的块数。nlr:关系:关系r的元组长度(字节数)。的元组长度(字节数)。n
16、V(r,A):关系:关系r在属性在属性A上的不同值数目上的不同值数目n在查询中经常同时出现的属性集上,也有类似的统计量。在查询中经常同时出现的属性集上,也有类似的统计量。nfr:关系:关系r的块因子,即一块能够容纳关系的块因子,即一块能够容纳关系r的元组数。的元组数。当当r存储在一个物理文件中时,存储在一个物理文件中时,br=nr/fr。n关系关系r的哪些属性(集)上建立了索引,哪种索引(的哪些属性(集)上建立了索引,哪种索引(B+树索引、树索引、Hash索引、聚集索引),并且对每个索引、聚集索引),并且对每个B+树索引包括属性树索引包括属性A上上B+树高树高度度h(r,A),B+树叶节点数树
17、叶节点数l(r,A)等信息等信息 9.2 选择运算的实现选择运算的实现2023年4月29日21时15分数据库系统概论17选择运算的实现选择运算的实现n查询最常用的运算是查询最常用的运算是选择选择、投影投影和和连接连接 n假设选择在关系假设选择在关系r上进行,而上进行,而r的元组存储在一个文件中,具的元组存储在一个文件中,具有有br个物理块。在考虑索引时,除非特别声明,否则假定索个物理块。在考虑索引时,除非特别声明,否则假定索引是引是B+树索引树索引 n基本算法基本算法 n1.线性搜索线性搜索n线性搜索又称线性搜索又称顺序扫描顺序扫描,它逐一扫描文件的每个物理块,它逐一扫描文件的每个物理块,检查
18、每个元组是否满足选择条件,并输出满足条件的元检查每个元组是否满足选择条件,并输出满足条件的元组。组。n线性搜索的线性搜索的I/O开销是读开销是读br个物理块个物理块n当选择是主码上的等值选择时,线性搜索的平均开销是当选择是主码上的等值选择时,线性搜索的平均开销是读读br/2个物理块,而最坏情况仍为个物理块,而最坏情况仍为br 2023年4月29日21时15分数据库系统概论18选择运算的实现选择运算的实现(续续)n线性搜索适用于任意条件的选择运算,并且对存储线性搜索适用于任意条件的选择运算,并且对存储r的文的文件不做任何假定件不做任何假定n当存储当存储r的文件不大,或者满足选择条件的元组所占比例
19、的文件不大,或者满足选择条件的元组所占比例较大时,线性搜索是一种较好的方法较大时,线性搜索是一种较好的方法 n2.二分法搜索二分法搜索n如果存储如果存储r的文件在某属性的文件在某属性A上是上是有序有序的,并且选择是在的,并且选择是在该属性上做该属性上做等值比较等值比较,则可以使用二分法搜索确定满足,则可以使用二分法搜索确定满足选择条件的元组。选择条件的元组。n为确定满足选择条件元组的位置,二分搜索需要读为确定满足选择条件元组的位置,二分搜索需要读 log2 br 个物理块。如果满足选择条件的元组多于一个,则还个物理块。如果满足选择条件的元组多于一个,则还需要读连续的物理块,得到其他满足选择条件
20、的元组需要读连续的物理块,得到其他满足选择条件的元组2023年4月29日21时15分数据库系统概论19选择运算的实现选择运算的实现(续续)n假设属性假设属性A上的值均匀分布,则满足选择条件的元组大上的值均匀分布,则满足选择条件的元组大约占约占 br/V(r,A)个,其中个,其中V(r,A)是是r在属性在属性A上的不同值数上的不同值数目。这样,二分法搜索的目。这样,二分法搜索的I/O开销为开销为 log2 br +br/V(r,A)1。n稍加修改,二分法搜索也可以用于大于等于和大于比较稍加修改,二分法搜索也可以用于大于等于和大于比较n当文件在选择属性上有序时,小于和小于等于比较可当文件在选择属性
21、上有序时,小于和小于等于比较可以使用线性搜索,可以提前终止扫描。以使用线性搜索,可以提前终止扫描。n二分法搜索十分有效,但是要求存储二分法搜索十分有效,但是要求存储r的文件在选择属性的文件在选择属性上有序上有序 2023年4月29日21时15分数据库系统概论20选择运算的实现选择运算的实现(续续)n使用索引的选择使用索引的选择n聚簇索引聚簇索引vs.一般索引一般索引n1.聚簇索引、等值选择聚簇索引、等值选择 n先通过索引找到指向满足选择条件的元组指针,确定结果先通过索引找到指向满足选择条件的元组指针,确定结果元组所在物理块,读取这些物理块就可得到查询结果。元组所在物理块,读取这些物理块就可得到
22、查询结果。n假设聚簇索引建立在属性假设聚簇索引建立在属性A上,则检索上,则检索B+树索引需要读取树索引需要读取的物理块数等于的物理块数等于B+树的高度树的高度h(r,A)n主索引建立在码上:满足条件的元组只有一个,再读主索引建立在码上:满足条件的元组只有一个,再读取一个物理块就能得到选择结果取一个物理块就能得到选择结果n非码主索引:满足条件的元组可能有多个,但存储在非码主索引:满足条件的元组可能有多个,但存储在连续的物理块中。大约需要读取连续的物理块中。大约需要读取 br/V(r,A)个物理块,个物理块,而整个选择的而整个选择的I/O开销大约为开销大约为h(r,A)+br/V(r,A)2023
23、年4月29日21时15分数据库系统概论21选择运算的实现选择运算的实现(续续)n使用索引的选择使用索引的选择(续续)n2.聚簇索引、比较选择聚簇索引、比较选择 n选择条件是大于等于和大于比较选择条件是大于等于和大于比较:使用索引可以确定满使用索引可以确定满足条件的第一个元组的位置足条件的第一个元组的位置。然后读取其后的物理块,。然后读取其后的物理块,就可以得到查询结果就可以得到查询结果n此时,选择运算的此时,选择运算的I/O开销为开销为h(r,A)加上读取结果元组加上读取结果元组的开销(通常比线性搜索快)。的开销(通常比线性搜索快)。n当当选择条件是小于和小于等于比较时,最好的方法是使选择条件
24、是小于和小于等于比较时,最好的方法是使用线性搜索(可以提前终止搜索),用线性搜索(可以提前终止搜索),而不是利用主索引而不是利用主索引n对于涉及非等值比较的选择,如果只有辅助索引,则使对于涉及非等值比较的选择,如果只有辅助索引,则使用索引一般不如使用线性搜索用索引一般不如使用线性搜索2023年4月29日21时15分数据库系统概论22选择运算的实现选择运算的实现(续续)n复杂选择的实现复杂选择的实现 n对于复杂选择,总可以用线性搜索的方法实现对于复杂选择,总可以用线性搜索的方法实现。然而,。然而,在某些情况下,如果存在可用的索引,则利用索引可以在某些情况下,如果存在可用的索引,则利用索引可以更有
25、效地实现复杂选择更有效地实现复杂选择 n1.利用单个属性上的索引的合取选择利用单个属性上的索引的合取选择n选择条件涉及多个属性上比较的合取选择条件涉及多个属性上比较的合取n如果单个属性上存在索引,则考虑该属性上的简单条如果单个属性上存在索引,则考虑该属性上的简单条件,并按前面的方法利用该索引得到满足该条件的元件,并按前面的方法利用该索引得到满足该条件的元组,然后检查它们是否满足其余条件组,然后检查它们是否满足其余条件n其其I/O开销等于单个属性上选择的开销等于单个属性上选择的I/O开销。开销。2023年4月29日21时15分数据库系统概论23选择运算的实现选择运算的实现(续续)n例如,假设查询
展开阅读全文