当前课程知识点:高级数据库系统 >  第二讲 查询处理及优化 >  1. 查询代价的测量及查询处理过程概述 >  2-1 查询代价的测量及查询处理过程概述

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

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

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

下一节:2-2. 关系操作的基础算法(1)

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

2-1 查询代价的测量及查询处理过程概述课程教案、知识点、字幕

同学们好,今天我们开始学习第二部分查询处理及优化

查询处理和优化技术是数据库管理系统当中的核心技术之一

所以这部分内容非常重要,这部分内容也比较多

所以我把这部分内容分为五个部分来给大家进行介绍

第一部分,查询代价的测量方式

第二部分,我们介绍查询处理过程

第三部分,我们来介绍关系操作的基础算法

第四部分,我们来介绍查询表达式的运算

第五部分,查询优化机制简介

下面我们来看第一部分,查询代价的测量

查询代价指的是查询处理过程时所涉及到的资源的使用情况

那么这个资源,我们主要指时间资源

所以呢,我们也把查询代价称为查询响应时间

也就是查询整个SQL语句所需要的时间

这个时间主要包括三个部分

第一部分是磁盘存取的时间

第二部分是CPU处理的时间

第三部分是数据传输时间

如果我们不考虑远程访问的话,那么我们只考虑本地数据库

对一个大规模的数据库来说,CPU处理的时间是可以忽略的

所以我们的查询响应时间,我们主要是由磁盘的存取时间来决定

而磁盘的存取时间呢,又与磁盘我们在磁盘上读取数据的数量有关

而这个数据的数量是指我们读取磁盘块的数量

所以从这个角度上来讲,我们在实际应用当中

一般的来说我们查询的代价是指的是查询的过程当中所涉及到的磁盘块的传送数量

我们用这个数量来作为查询代价的度量

那么这就是我们后面所有的算法涉及到的代价运算

都是用查询过程当中所涉及到磁盘块的数量来进行度量的

那么下面我们来说第二部分,关系查询处理概述

那么在这一部分处理当中,我们要给大家介绍一下

一个SQL语句从它放到查询引擎里面,它都经过了哪些处理过程

最后才给用户提交出查询结果来

那么查询的处理,实际上是在数据库管理系统的查询编译器中

当用户提交一个SQL语句之后

事物管理器就会把SQL语句提交给查询编译器

查询编译器呢,就会对SQL语句进行语法分析,生成一棵语法树

接下来在这棵语法树的基础之上,我们把它生成逻辑查询计划

这个逻辑查询计划是由关系代数表达式树表达的

那么对逻辑查询计划我们需要有一些规格对它进行优化

优化完之后的逻辑查询计划我们会对它生成一个物理查询计划

然后呢,生成的物理查询计划我们再对它优化之后呢

直接放入查询引擎进行执行

查询引擎就会从数据库当中抽取出要查询的结果,返回给用户

在整个的查询编译过程当中

无论是逻辑查询计划的优化和物理查询计划的优化都涉及到使用的元数据

所以呢,在这个地方,它会用到这个数据库里的一些元数据的描述来使用

下面我们用一个例子来说一下,整个查询处理过程是一个什么样

我们呢,用一个学生信息这样的一些表

比如说,我们用学生信息叫student,我们用s来代表

再用一个sc来代表学生选课这样的一种情况

这样呢,比如我要从这两张表里面查询出A同学选课的情况

它的查询语句,就像左边这样,我们用SELECT语句这样来写

如果这个查询语句仍在查询编译器里面的话

查询编译器就首先要对它进行语法分析

语法分析就要根据SQL的语法规则

SQL的语法规则,并不难,它实际上是一个已经编制好的框架

这个语法分析的语法规则呢,我们不在这里做详细的介绍

但是大家可以从高级数据库技术这本书里面可以找到

我们在这个ppt上给大家解释了几个例子

语法分析的结果呢,是要生成一棵语法树

这棵语法树就是对刚才的SELECT语句生成的一棵语法树

语法树生成之后,我们就可以将这个语法树转换成

由关系代数表达式树来描述的逻辑查询计划

这就是一个逻辑查询计划,对这个逻辑查询计划

我们需要用到一些关系代数的一些等价变换把它进行优化

比如我可以把这个选择节点像叶子方向去推来减少中间结果的产生

然后我们再进行优化,可以把这个笛卡尔成绩变成自然链接

优化了之后呢,我们就可以在这个优化好的逻辑查询计划上生成物理查询计划

这个就是一个物理查询计划

物理查询计划都包含哪些内容呢,我们来看一下

它主要包含三方面的内容,第一个就是叶子节点如何输入

比如在这棵树上,我们的叶子节点是采用扫描的方式还是采用索引的方式输入进去

另外一个呢,就是中间节点的一些运算

采用什么样的方法进行实现,那么再有呢

就是如果这棵树比较大的话,那么我们如何对这棵树进行优化

比如它的执行顺序是什么样子的

这是逻辑查询计划的内容

在物理查询计划当中,叶子节点的输入方法与它上一层的关系运算实现算法

是紧密联系在一起的,也就是说由上一层关系运算的时间算法来确定

各个子树来进行这个执行的顺序

实际上也与每一个节点的运算的实现情况来确定

所以在这三个方面内容当中,每一个树中每一个结点关系运算的算法的实现

是非常重要的一个内容,所以呢,我们要重点来介绍一下

在逻辑查询计划这个树当中叶子结点涉及到的关系运算,它的基础时间算法

有了这个基础时间算法,才可以对整个数来进行优化

所以那么下面我们来介绍的第三个内容

就是实现关系操作的基础算法,那么在关系数据库里面

实现关系操作的基础算法

主要有三类,第一类是基于排序的算法

第二类是基于散列的算法,第三类是基于索引的算法

实际上这些算法的使用还根据数据的规模来确定

有的时候如果数据规模比较小,那么可能呢

我们实现就比较容易一些,所以当数据的规模不同

这些算法的实现又可以分成一趟算法,两趟算法,和多趟算法

实际上我们更关注是数据规模比较大的情况

但是在介绍这个数据规模比较大情况的这个算法实现过程之前

我们先来看一下数据库操作的一趟算法

一趟算法主要是指当我们对数据库运算的时候

数据库的规模比较小,比如说它可以一次性的装入内存

或者说这种我们所要涉及到的关系运算

它本身具有这样一趟实现的这样一种性质

你比如说像选择运算和投影运算,那么在这样的一种运算当中呢

我们就可以采用一趟算法进行实现

你比如说,像这个图里面,那么如果是选择或者投影操作

我可以直接从存储介质上将数据块直接读入缓冲区

然后直接进行投影操作然后再把它输出

也就是说类似于一种流水线的这样的一种方式实现出来

这是没有问题的,那么如果是二元算法

比如说我要做一个并运算,集合运算或者是做一个连接运算的话

那么如果我要用一趟算法的话,那么这个对关系呢

它的数据量就有一个要求,那么要求至少得有一个关系能够全部能装入内存

否则的话呢,这种数据,我们用这种一趟算法是很难实现的

所以这是一趟算法,但是我们这一章呢

主要讲的是关系比较大的情况下,也就说我的关系不可能一次性的装入内存

那么在这种情况下,我们必须得使用两趟或者是多趟算法来实现

那么多趟算法,实际是两趟算法的扩展

所以我们在这里给同学们讲了就是以两趟算法为主

给大家来讲这个大型的关系数据库,它在进行关系运算的时候它的实现算法

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

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

-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-1 查询代价的测量及查询处理过程概述笔记与讨论

也许你还感兴趣的课程:

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