书签 分享 收藏 举报 版权申诉 / 67
上传文档赚钱

类型关系查询处理和其查询优化课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4574398
  • 上传时间:2022-12-20
  • 格式:PPT
  • 页数:67
  • 大小:355KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《关系查询处理和其查询优化课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    关系 查询 处理 优化 课件
    资源描述:

    1、第九章第九章 关系查询处理和其查询优化关系查询处理和其查询优化9.1 关系数据库系统的查询处理关系数据库系统的查询处理9.2 关系数据库系统的查询优化关系数据库系统的查询优化9.3 代数优化代数优化9.4 物理优化物理优化9.1关系数据库系统的查询处理关系数据库系统的查询处理l9.1.1 查询处理步骤查询处理步骤 分分4个阶段:查询分析,查询检个阶段:查询分析,查询检查,查询优化,查询执行查,查询优化,查询执行l1 查询分析查询分析 对查询语句进行扫描、词法分析和语法对查询语句进行扫描、词法分析和语法分析。分析。l2 查询检查查询检查 根据数据字典对合法的查询语句进行语根据数据字典对合法的查询

    2、语句进行语义检查,即检查语句中的数据库对象,义检查,即检查语句中的数据库对象,如属性名、关系名,是否存在和是否有如属性名、关系名,是否存在和是否有效。权限和完整性检查,转换为查询树效。权限和完整性检查,转换为查询树l3 查询优化查询优化 在许多的执行策略中选择一个高效在许多的执行策略中选择一个高效的查询处理策略。分为代数优化和的查询处理策略。分为代数优化和物力优化。物力优化。l4 查询执行查询执行 生成查询计划,由代码生成器生成生成查询计划,由代码生成器生成执行查询的代码。执行查询的代码。查询语句词法分析语法分析语义分析符号名转换安全性检查完整性检查查询树代数优化物理优化等执行策略描述代码生成

    3、查询计划的执行代码查询分析查询检查查询优化查询执行9.1.2实现查询操作的算法示例实现查询操作的算法示例一、选择操作的实现一、选择操作的实现例例 select *from student where;条件为:条件为:C1:无条件:无条件 C2:sno=200215121 C3:sage20 C4:sdept=CS AND sage20;l1.简单的全表扫描简单的全表扫描 对小表简单有效,对大表费时,效率低对小表简单有效,对大表费时,效率低snoSnameSsexSagesdept20021513220021512220021512120021525.l2.索引扫描方法索引扫描方法 如果选择条件

    4、中的属性上有索引,用索如果选择条件中的属性上有索引,用索引扫描法。通过索引先找到满足条件的引扫描法。通过索引先找到满足条件的元组主码或指针,再通过指针找基表中元组主码或指针,再通过指针找基表中的数据的数据snoSnameSsexSagesdept20021513220021512220021512120021525.索引索引地址地址200215121200215122200215125200215132l二、连接操作的实现二、连接操作的实现 连接操作是最费时的操作连接操作是最费时的操作 例:例:select*from student,scwhere student.sno=sc.sno1.嵌套

    5、循环方法嵌套循环方法Snosname5837snocno7578382.排序排序-合并方法合并方法适合于连接的诸表已经排序的情况适合于连接的诸表已经排序的情况步骤:步骤:1)先对待连接的表在连接属性上排序)先对待连接的表在连接属性上排序2)取左表的第一个元组,一次扫描右表,找连)取左表的第一个元组,一次扫描右表,找连接属性相等的元组,把他们连接起来接属性相等的元组,把他们连接起来3)当在右表中找到第一个与左表提供的值不相)当在右表中找到第一个与左表提供的值不相等时,返回左表取下一个元组再往下扫描右表。等时,返回左表取下一个元组再往下扫描右表。重复这一过程,直到左表扫描完毕。重复这一过程,直到左

    6、表扫描完毕。Snosname5837snocno757838sno357788sno35783.索引连接方法索引连接方法步骤:步骤:1)在)在sc表上建立属性表上建立属性sno的索引的索引2)对)对student中的每一个中的每一个sno,通过通过sc的索引的索引找相应的找相应的sc元组元组3)把这些元组与)把这些元组与student中的当前元组连中的当前元组连接起来接起来4)重复)重复2)3)直到)直到student表处理完毕表处理完毕9.2 关系系统的查询优化关系系统的查询优化 9.2.1 查询优化概述查询优化概述9.2.1 查询优化概述查询优化概述l查询优化的必要性查询优化的必要性 查询

    7、优化极大地影响查询优化极大地影响RDBMS的性能。的性能。l查询优化的可能性查询优化的可能性 关系数据语言的关系数据语言的级别很高级别很高,使,使DBMS可以从关系表达式中分析查询可以从关系表达式中分析查询语义语义。由由DBMS进行查询优化的好处进行查询优化的好处l用户不必考虑如何最好地表达查询以获用户不必考虑如何最好地表达查询以获得较好的效率得较好的效率l系统可以比用户程序的系统可以比用户程序的优化优化做得更好做得更好(1)优化器可以从数据字典中获取许多统计信息,优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息而用户程序则难以获得这些信息 由由DBMS进行查询优化的好处进

    8、行查询优化的好处(2)如果数据库的物理统计信息改变了,系统可以自动如果数据库的物理统计信息改变了,系统可以自动对查询对查询重新优化重新优化以选择相适应的执行计划。以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。应用中往往是不太可能的。(3)优化器可以考虑数百种不同的执行计划,而程序员优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术优化器中包括了很多复杂的优化技术查询优化目标查询优化目标l查询优化的总目标查询优化的总目

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

    10、划是由一系列内部操作组成的。查询计划是由一系列内部操作组成的。代价模型代价模型l集中式数据库集中式数据库 单用户系统单用户系统总代价总代价=I/O代价代价+CPU代价代价 多用户系统多用户系统总代价总代价=I/O代价代价+CPU代价代价+内存代价内存代价l分布式数据库分布式数据库 总代价总代价=I/O代价代价+CPU代价代价+内存代价内存代价+通信代价通信代价 9.2.2 一个实例一个实例 例:求选修了课程例:求选修了课程2的学生姓名的学生姓名 SELECT Student.SnameFROM Student,SCWHERE Student.Sno=SC.SnoAND SC.Cno=2;假设假

    11、设1:外存:外存:Student:1000条条,SC:10000条条,选修选修2号课程号课程:50条条假设假设2:一个内存块装元组:一个内存块装元组:10个个Student,或或100个个SC,内存中一次可以存放内存中一次可以存放:5块块Student元组元组,1块块SC元组和若干块连接结果元组元组和若干块连接结果元组假设假设3:读写速度:读写速度:20块块/秒秒假设假设4:连接方法:连接方法:基于数据块基于数据块的嵌套循环法的嵌套循环法 3种执行策略种执行策略 Q1Sname(Student.Sno=SC.SnoSC.Cno=2(StudentSC)2 name(SC.Cno=2(Stude

    12、nt SC)3 Sname(Student SC.Cno=2(SC)执行策略执行策略1Q1Sname(Student.Sno=SC.SnoSC.Cno=2(StudentSC)StudentSC 读取总块数读取总块数=读读Student表块数表块数+读读SC表遍数表遍数*每遍块数每遍块数=1000/10+(1000/(105)(10000/100)=100+20100=2100 读数据时间读数据时间=2100/20=105秒秒不同的执行策略不同的执行策略,考虑考虑I/O时间时间中间结果大小中间结果大小=1000*10000=107 (1千万条千万条元组元组)写中间结果时间写中间结果时间=100

    13、00000/10/20=50000秒秒 读数据时间读数据时间=50000秒秒 总时间总时间=1055000050000秒秒=100105秒秒 =27.8小时小时2.2 name(SC.Cno=2(Student SC)读取总块数读取总块数=2100块块读数据时间读数据时间=2100/20=105秒秒中间结果大小中间结果大小=10000 (减少(减少1000倍)倍)写中间结果时间写中间结果时间=10000/10/20=50秒秒 读数据时间读数据时间=50秒秒 总时间总时间1055050秒秒205秒秒=3.4分分 3.3 Sname(Student SC.Cno=2(SC)读读SC表总块数表总块数

    14、=10000/100=100块块读数据时间读数据时间=100/20=5秒秒 中间结果大小中间结果大小=50条条 不必写入外存不必写入外存 读读Student表总块数表总块数=1000/10=100块块读数据时间读数据时间=100/20=5秒秒 总时间总时间55秒秒10秒秒 4.3 name(Student SC.Cno=2(SC)假设假设SC表在表在Cno上有索引,上有索引,Student表在表在Sno上有上有索引索引 读读SC表索引表索引读读SC表总块数表总块数=50/1001块块读数据时间读数据时间 中间结果大小中间结果大小=50条条 不必写入外存不必写入外存 读读Student表索引表索

    15、引读读Student表总块数表总块数=50/10=5块块读数据时间读数据时间 总时间总时间 连接运算连接运算 例:例:Student.Sno=SC.Sno (StudentSC)Student SCl提取公共子表达式提取公共子表达式关系代数表达式的优化算法关系代数表达式的优化算法 算法:关系表达式的优化算法:关系表达式的优化输入:一个关系表达式的语法树。输入:一个关系表达式的语法树。输出:计算该表达式的程序。输出:计算该表达式的程序。方法:方法:(1)分解选择运算)分解选择运算 利用规则利用规则4把形如把形如F1 F2 Fn(E)变换为变换为 F1(F2(Fn(E)关系代数表达式的优化算法关系

    16、代数表达式的优化算法(续续)(2)通过交换选择运算,将其尽可能移到叶端)通过交换选择运算,将其尽可能移到叶端 对每一个选择,利用规则对每一个选择,利用规则49尽可能把它移尽可能把它移到树的叶端。到树的叶端。(3)通过交换投影运算,将其尽可能移到叶端)通过交换投影运算,将其尽可能移到叶端对每一个投影利用规则对每一个投影利用规则3,10,l1,5中的一般中的一般形式尽可能把它移向树的叶端。形式尽可能把它移向树的叶端。关系代数表达式的优化算法关系代数表达式的优化算法(续续)(4)合并串接的选择和投影,以便能同时执行)合并串接的选择和投影,以便能同时执行或在一次扫描中完成或在一次扫描中完成 利用规则利

    17、用规则35把选择和投影的串接合并成单把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。个选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时执行,或在一次扫使多个选择或投影能同时执行,或在一次扫描中全部完成描中全部完成 尽管这种变换似乎违背尽管这种变换似乎违背“投影尽可能早做投影尽可能早做”的原则,但这样做效率更高。的原则,但这样做效率更高。关系代数表达式的优化算法关系代数表达式的优化算法(续续)(5)对内结点分组)对内结点分组 把上述得到的语法树的内节点分组。把上述得到的语法树的内节点分组。每一双目运算每一双目运算(,-)和它所有的直和它所有的直接祖先为一组接祖先为一

    18、组(这些直接祖先是这些直接祖先是,运算运算)。如果其后代直到叶子全是单目运算,则也将如果其后代直到叶子全是单目运算,则也将它们并入该组,但当双目运算是笛卡尔积它们并入该组,但当双目运算是笛卡尔积(),而且其后的选择不能与它结合为等值,而且其后的选择不能与它结合为等值连接时除外。把这些单目运算单独分为一组连接时除外。把这些单目运算单独分为一组。关系代数表达式的优化算法关系代数表达式的优化算法(续续)(6)生成程序)生成程序 生成一个程序,每组结点的计算是程序中的生成一个程序,每组结点的计算是程序中的一步。一步。各步的顺序是任意的,只要保证任何一组的各步的顺序是任意的,只要保证任何一组的计算不会在

    19、它的后代组之前计算计算不会在它的后代组之前计算。优化的一般步骤优化的一般步骤 1把查询转换成某种内部表示把查询转换成某种内部表示2代数优化:把语法树转换成标准(优化)代数优化:把语法树转换成标准(优化)形式形式3物理优化:选择低层的存取路径物理优化:选择低层的存取路径4生成查询计划,选择代价最小的生成查询计划,选择代价最小的 优化的一般步骤优化的一般步骤(续续)(1)把查询转换成某种内部表示)把查询转换成某种内部表示例:求选修了课程例:求选修了课程2的学生姓名的学生姓名SELECT Student.SnameFROM Student,SCWHERE Student.Sno=SC.SnoAND

    20、SC.Cno=2;(1)把查询转换成某种内部表示)把查询转换成某种内部表示语法树语法树 结果结果project(Sname)select(SC.Cno=2)join(Student.Sno=SC.Sno)StudentSC关系代数语法树关系代数语法树Sname SC.Cno=2 Student.Sno=SC.S StudentSC(2)代数优化)代数优化利用优化算法利用优化算法把语法树转换成标准(优化)形式把语法树转换成标准(优化)形式 Sname Student.Sno=SC.Sno SC.Cno=2 StudentSCl例例:对于如下数据库:对于如下数据库:S(SS(S ,SNAME,AG

    21、E,SNAME,AGE,SEX)SEX)SC(S#,C#,GRADE)SC(S#,C#,GRADE)C(CC(C ,CNAME,TEACHER),CNAME,TEACHER)现有一个查询语句:现有一个查询语句:查询至少学习LIU老师所授一门课程的女学生学号和姓名。该查询语句的关系代数表达式为:S#,SNAME(TEACHER=LIU SEX=F(S SC C)l自然联接的计算过程如下:自然联接的计算过程如下:l计算计算R RS S;-计算笛卡尔积计算笛卡尔积l设设R R和和S S的公共属性是的公共属性是A A1 1,A,A2 2A Ak k,挑选挑选R RS S中满足中满足R.AR.A1 1=

    22、S.A=S.A1 1,R.AR.AK K=S.A=S.AK K的那些元组;的那些元组;-选择公共属选择公共属性值相等的元组。性值相等的元组。l去掉去掉S.AS.A1 1,S.AS.AK K这些列。这些列。-做投影操作。做投影操作。则此查询语句的关系代数表达式为:S#,SNAME(TEACHER=LIU SEX=F(L(SC.C#=C.C#SC.S#=S.S#(SSCC)这里L为S,SNAME,AGE,SEX,C#,GRADE,CNAME,TEACHERS#,SNAMETEACHER=LIU SEX=FSC.C#=C.C#SC.S#=S.S#S,SNAME,AGE,SEX,C#,GRADE,CN

    23、AME,TEACHERSCSCl下面使用优化算法对语法树进行优化下面使用优化算法对语法树进行优化1)将每个选择操作分裂成两个选择运算。)将每个选择操作分裂成两个选择运算。共得到四个选择操作共得到四个选择操作 teacher=liu sex=f c.c#=sc.c#sc.s#=s.s#2)使用等价变换规则,把四个选择操作尽使用等价变换规则,把四个选择操作尽可能的向树的叶端靠拢。根据规则可能的向树的叶端靠拢。根据规则4和和5可以把可以把 teacher=liu和和 sex=f移到投影和另外两个选择移到投影和另外两个选择操作下面,得到表达式操作下面,得到表达式 teacher=liu(sex=f(C

    24、 SC)S)其中,外层选择仅涉及到关系C,内层选择仅涉及到关系S,所以上式又可变化为 teacher=liu(C)SC)sex=f(S)sc.s#=s.s#不能再往叶端移动了,因为他的属性涉及到两不能再往叶端移动了,因为他的属性涉及到两个关系个关系Sc和和S,但,但 c.c#=sc.c#还可以向下移,与迪卡尔积还可以向下移,与迪卡尔积交换位置交换位置然后根据规则然后根据规则3,把两个投影合并为一个,把两个投影合并为一个,这样,原来的语法树变成了如下形式。这样,原来的语法树变成了如下形式。S#,SNAMESC.S#=S.S#SCSCSC.C#=C.C#SEX=FTEACHER=LIU3)根据规则

    25、)根据规则5,把头迎合选择进行互换,在选择,把头迎合选择进行互换,在选择前增加一个投影操作前增加一个投影操作代替代替S.S#,SNAME和和SC.S#=S.S#,再把 SC.S#,S.S#,SNAME分成 SC.S#和 S.S#,SNAME,使他们分别对c.c#=sc.c#()和和 Sex=f()做投影操作。做投影操作。S.S#,SNAMESC.S#=S.S#SC.S#,S.S#,SNAME再根据规则再根据规则5,将投影,将投影 S.S#和 S.S#,SNAME分别与前面的选择操作形成两个级连运算:S.S#C.C#=SC.C#C.C#,SC.S#,SC.C#S.S#,SNAMESEX=FS#,

    26、SEX,SNAME再把 C.C#,SC.S#,SC.C#往叶端移,形成如下语法树SC.S#CSCSC.C#=C.C#TEACHER=LIUSC.S#,SC.C#C,C#S#,SNAMESC.S#=S.S#SEX=FS#,SNAMES9.4物理优化:选择低层的存取路径物理优化:选择低层的存取路径-优化器查找数据字典获得当前数据库状态信息优化器查找数据字典获得当前数据库状态信息 选择字段上是否有索引选择字段上是否有索引 连接的两个表是否有序连接的两个表是否有序 连接字段上是否有索引连接字段上是否有索引 然后根据一定的优化规则选择存取路径然后根据一定的优化规则选择存取路径 如若如若SC表上建有表上建

    27、有Cno的索引,则应该利用这个的索引,则应该利用这个索引,而不必顺序扫描索引,而不必顺序扫描SC表。表。(4)生成查询计划,选择代价最小的)生成查询计划,选择代价最小的 在作连接运算时,若两个表在作连接运算时,若两个表(设为设为R1,R2)均无序,连均无序,连接属性上也没有索引,则可以有下面几种查询计划接属性上也没有索引,则可以有下面几种查询计划:对两个表作排序预处理对两个表作排序预处理 对对R1在连接属性上建索引在连接属性上建索引 对对R2在连接属性上建索引在连接属性上建索引 在在R1,R2的连接属性上均建索引的连接属性上均建索引 对不同的查询计划计算代价,选择代价最小的一个。对不同的查询计划计算代价,选择代价最小的一个。在计算代价时主要考虑磁盘读写的在计算代价时主要考虑磁盘读写的I/O数,内存数,内存CPU处处理时间在粗略计算时可不考虑。理时间在粗略计算时可不考虑。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:关系查询处理和其查询优化课件.ppt
    链接地址:https://www.163wenku.com/p-4574398.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库