当前课程知识点:高级数据库系统 >  第二讲 查询处理及优化 >  4.查询优化机制 >  2-4 查询优化机制

返回《高级数据库系统》慕课在线视频课程列表

2-4 查询优化机制在线视频

2-4 查询优化机制

下一节:html

返回《高级数据库系统》慕课在线视频列表

2-4 查询优化机制课程教案、知识点、字幕

下面我们来介绍一下查询优化

我们在前面给大家介绍查询处理的过程

也就是说一个SQL语句来了之后

我们先对它进行语法分析,生成语法树

那么再生成逻辑查询计划

那么对它进行优化之后,再优化后的逻辑查询计划里面呢

基础之上呢,再生成物理查询计划

那这个过程并不是单线执行的,也就是说直接一次性就结束了的

实际上这个过程要执行多次,也就说我们生成逻辑查询计划之后

我们对逻辑查询计划要进行一个优化

那么优化呢,在这个优化的基础之上

我们对它生成一个物理查询计划

然后再对物理查询计划进行优化

最后呢,生成一个查询策略

那么不是说生成一个查询策略之后就结束了

而是这个过程再要返回去,我们再对逻辑查询计划再进行优化

再生成一个物理查询计划,然后我们对两个物理查询计划进行比较

看哪一个代价比较小,我们选择其中较小的

然后再对逻辑查询计划进行优化,再生成物理查询计划

再进行优化之后呢,我们再生成一个策略

那么这个策略生成呢,一直到把所有的等价策略完全试完了之后

我们选出一个代价比较小的这样一个查询策略呢

才是我们最后要放到这个查询引擎里去执行的这样一个查询计划

所以在查询处理的过程当中呢就包含着查询优化

而从这个过程我们来看呢,就是查询优化我们包含两个层次上的

一个层次上就是逻辑层次上查询优化

那么第二个呢,就是物理层次上的查询优化

那么逻辑层次上的查询优化呢,实际上就是那个关系代数表达式树的优化

那么它的优化,我们主要是用的关系理论

也就是关系代数的一些等价变换理论

那么关系代数的等价变换理论是非常的多

我们在这里不做详细的介绍

大家可以看我的这个ppt上,给大家列出来的一些

也可以看教材上里面的一些关于关系代数等价变换的一些理论

但是呢,在这里面呢,我需要给大家这个提醒的呢

就说在进行关系代数这个等价变换进行优化的时候

我们也是有一些规则的,也就是说我们不是没有目的的进行等价变换

我们的等价变换的规则是什么呢

一般的来说,就是启发式的一些规则

那么这些规则呢,在这个我们等价变换的时候呢,实际上我们是有一些认识的

比如说我们尽量把一些投影或者是一些选择向叶子节点进行推

使得我们选出的中间结果是最小

然后我们有利上一层的二元运算

比如说要做自然连接,或者是要做这个集合运算

我们ppt上也给出了来一个例子,是吧

那么我们拿到一个逻辑查询计划之后

我们需要利用等价变换,把它进行优化

那么这个时候呢,我们就要利用一些启发式的规则来进行优化

那么当然这个,我们知道一个查询实际上把它变成关系代数表达式树的时候

它优化之后的表达实际上并不只一个

你比如说它的顺序是可以发生变化

我们把这一个优化后的规则可以表示出很多的这样的一种表达方式

然后我们就可以根据这样的一些表达方法呢

来进行一些物理计划的,物理查询计划的生成,就是这样

这个地方我就说这么多

然后下面我们来说下一个层次,也就是物理查询计划的选择

那么我们说在已经优化好的这个关系代数表达式树上

我们要对它进行物理查询计划的生成

也就说我们需要确定叶子节点如何输入

每一个中间节点的关系运算怎么样去进行实现

选择什么样的算法,那么除此之外呢

我们可能还需要去识别一些比如说哪些运算我可以采用流水线的方法

因为流水线的方法,虽然我们前面讲了很多的这个毛病,还有它的缺点

但实际上呢,在一部分里面我们还是可以应用的

比如说一些选择运算,那我们完全可以用流水线的方法

因为代价确实小嘛,再有一个就是如果这棵查询树比较大的话

我们需要去确定,那么需要先计算哪一些分支

也就说运算次序的确定,这个呢

都是物理查询计划里面需要进行选择优化

那么一般的来说,关于查询次序的确定呢

我们主要是采用一些枚举技术,比如说我们要把这个查询树,是吧

那么比如说各个子树我们都要重新举一遍

比如说先计算左分支,还是计算中间的分支,还是计算右边的分支等等

那么要根据不同的枚举出来不同的例子呢,生成不同的查询策略

然后我们再对它进行成本的运算

那么关于整个物理查询计划优化过程当中的成本运算

我们怎么去计算呢,也就是说它实际上是一个系统的过程

我们再进行物理查询计划的这个选择的时候

并不是单看某一个节点

比如说我用排序的算法代价最小,还是用索引的算法代价最小

并不单看某一个节点,而是把整棵树看成一个系统,我们采用一些优化算法

比如说我们用动态规划算法

我们用分枝定界算法,或者是用一些爬山法等等

在优化算法中的一些理论来进行实现

那么在这个过程当中,我们会使用一些元数据

也像逻辑查询计划一样,我们会使用一些比如说

这个关系中这个它的元组的多少,它所占磁盘块的数量等等这样一些元数据

来帮助我们来进行这个优化,做优化的一些参数

那么从我们前面介绍的这些查询处理过程来说

我们可见一个数据库管理系统的查询编译器,它是多么的复杂

因为它涉及了很多的一些优化算法的实现

那么但是呢,也就说尽管这些优化算法已经很好了

但实际上,编译器的这个优化能力还是非常有限的

也就是说,它虽然用了很多优化算法

但实际上呢,它也只能解决一部分的问题

尽管它也很复杂,它也不可能解决所有的问题

所以我们有的时候也要考虑到就说我们在写一些查询语句的时候

不要想象我的查询编译器可以做所有的事情

我们一定要考虑到查询编译器实际上它的优化能力是有限的

我们写查询语句就不要写一些太复杂的

比如我们要写一些这个相关的子查询或者一些嵌套相关子查询

像这样的一些在实现的时候,效率都是非常低的

到此为止呢

我们就把整个数据库管理系统里面的查询处理和它的优化过程给大家介绍完了

高级数据库系统课程列表:

第一讲 数据文件的组织与索引技术

-1. 数据文件的组织

--1-1 数据文件的组织

-2. 索引的概念与分类

--1-2 索引的概念与分类

-3. B+树索引

--1-3 B+树索引(1)

--1-3 B+树索引(2)

-4. 散列索引

--1-4 散列索引

-5. 小结

--html

-6.练习--作业

第二讲 查询处理及优化

-1. 查询代价的测量及查询处理过程概述

--2-1 查询代价的测量及查询处理过程概述

-2. 关系操作的基础算法

--2-2. 关系操作的基础算法(1)

--2-2. 关系操作的基础算法(2)

-3. 查询表达式的运算

--2-3 查询表达式的运算

-4.查询优化机制

--2-4 查询优化机制

-5.小结

--html

-6.练习--作业

第三讲 数据管理与恢复技术

-1. 数据库的故障及可恢复模型

--3-1. 数据库的故障及可恢复模型

-2. 事务及日志的相关概念

--3-2. 事务及日志的相关概念

-3. 基于undo日志的恢复机制

--3-3. 基于undo日志的恢复机制

-4. 基于redo日志的恢复机制

--3-4. 基于redo日志的恢复机制

-5. 小结

--html

-6. 练习--作业

第四讲 事务并发调度的相关概念

-1. 并发调度及相关概念

--4-1. 并发调度及相关概念

-2. 可串行化调度

--4-2. 可串行化调度

-3. 冲突可串行化调度

--4-3. 冲突可串行化调度

-4. 小结

--html

-5. 练习--作业

第五讲 基于封锁的并发控制机制

-1. 锁的概念及封锁的原理

--5-1. 锁的概念及封锁的原理

-2. 两阶段锁协议

--5-2. 两阶段锁协议

-3. 多粒度锁及意向锁

--5-3. 多粒度锁及意向锁

-4. 死锁的处理

--5-4. 死锁的处理

-5. 小结

--html

-6. 练习--作业

第六讲 并发控制的其它机制

-1. 基于时间戳的调度

--6-1. 基于有效性检验的调度

-2. 基于有效性检验的调度

--6-2. 基于时间戳的调度

-3. 小结

--html

-4. 练习--作业

第七讲 分布式数据库基本概念

-1. 分布式数据库系统的产生及定义

--7-1. 分布式数据库系统的产生及定义(1)

--7-1. 分布式数据库系统的产生及定义(2)

-2. 分布式数据库系统的模式结构与功能结构

--7-2. 分布式数据库系统的模式结构与功能结构

-3. 分布式数据库系统中存在的技术问题

--7-3. 分布式数据库系统中存在的技术问题

-4. 小结

--html

-5. 练习--作业

第八讲 分布式数据库的设计

-1. 分布式数据库的设计方法、内容和目标

--8-1. 分布式数据库的设计方法、内容和目标

-2. 自顶向下方法构建数据库

--8-2 . 自顶向下方法构建数据库

-3. 数据的分片和分布设计

--8-3. 数据的分片和分布设计(1)

--8-3. 数据的分片和分布设计(2)

-4. 分布式数据库设计案例讲解

--8-4. 分布式数据库设计案例讲解(1)

--8-4. 分布式数据库设计案例讲解(2)

--8-4. 分布式数据库设计案例讲解(3)

-5. 小结

--html

-6. 练习--作业

第九讲 分布式数据库查询机制

-1. 分布式查询处理的步骤和代价

--1. 分布式查询处理的步骤和代价

-2. 基于等价变换的查询优化

--2. 基于等价变换的查询优化

-3. 基于半连接算法的查询优化

--3. 基于半连接算法的查询优化

-4. 基于直接连接算法的查询优化

--4. 基于直接连接算法的查询优化

-5. 小结

--html

-6. 练习--作业

第十讲 分布式数据库的事务管理及恢复机制

-1. 分布式事务概述

--1. 分布式事务概述

-2. 分布式事务的两阶段提交协议

--2. 分布式事务的两阶段提交协议

-3.分布式并发控制概述

--3.分布式并发控制概述

-4. 并发控制的加锁机制

--4. 并发控制的加锁机制

-5. 并发控制的时标技术

--5. 并发控制的时标技术

-6. 小结

--html

-7.练习--作业

高级数据库技术期末试题

-试题--作业

2-4 查询优化机制笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。