当前课程知识点:高级数据库系统 >  第四讲 事务并发调度的相关概念 >  1. 并发调度及相关概念 >  4-1. 并发调度及相关概念

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

4-1. 并发调度及相关概念 在线视频

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

下一节:4-2. 可串行化调度

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

4-1. 并发调度及相关概念 课程教案、知识点、字幕

大家好,今天我们来开始介绍第四部分内容

事务的并发的一些相关概念

事务并发是数据库管理系统必须解决的一个问题

那么因为一个数据库管理系统必须要能够支持多用户共同使用它

那么今天我们主要给大家介绍这样几个概念

第一个是事务并发以及相关概念

第二是可串行化调度

第三是冲突可串行化调度这样几个相关的概念

我们首先来看一下事务并发的一些基本概念

那么什么叫做事务的并发呢

事务的并发指的是在同一个时间段内

有多个事务去访问相同的数据库数据或者说相同的数据资源

那么这样的一种操作呢叫做并发

它并不是说在某一时刻,而是指在同一时间段内

那么并发操作如果不进行隔离的话,就会产生一些问题

那么这些问题我们总结一下大概有三个

第一个叫丢失修改的问题,我们用这张图来看一下

我们这张图里的时间从上向下走,从t1到t4

然后呢,比如说从t1到t4这样的一个时间轴

时间段里面有两个事务,目前正在执行

那么在这个时间段里面呢,两个事务可能都要去访问

这个数据项D这样一个相同的数据资源

比如事务A在t1时刻读了D,t2时刻事务B又读了D

那么t3时刻事务A,它修改了D

然后T4时刻这个事务B要去修改D

那么这种修改的话,我们就会发现当事务B修改了D的时候

事务A对D的修改实际上我们是看不到的,是吧

就是相当于它的这种修改已经丢失了

那么事务B读的是原始的数据D

所以说那事务A它的修改是没有用的,没有任何意义的

那么这个时候可能就会引起一些数据的错误,这是一个

那么第二个呢,就是我们读入的数据是脏数据

读入数据脏数据的情况就类似于这个,这张图

那么同样,我们就说在这个时间段内,t1到t4的时间段内

事务A和B都对D进行一个访问

比如事务A,它先读了D,然后对它进行了修改在t2时刻

接下来它可能做一些其他的操作

然后在t3时刻,事务B又去读数据项D

但是事务A在t4时刻可能它发生了一些错误

那么事务没有成功的执行,它就要回退

那么它要回退到原点,也就说

它对数据D的所有修改都要恢复到原来的值,原来的状态

那么这个时候那我们说事务B读的这个D

那都已经是事务A修改的D了

如果说我们对它的这样的一种修改,如果没有保存

比如说A,修改的已经到了磁盘上

如果现在我们突然要把它进行回退的话

那么B读的数据D显然是错误的,那我们把这种读叫做脏读

那么再有一种呢,叫做不可重复读

也就说它会出现像图上这样的一种现象

一个事务B它两次读数据D的时候,读出的值是不一样的

为什么呢,是因为有一个事务A

在中间在这个事务B两次读的中间对D进行了修改

那么这样的话,事务B它读出来的D两次是不一样的

那么但是对它的这个事务来说,它读数据应该是一样的才对呀

那么为什么不一样呢,有的是对一些业务来说可能就会产生一些错误

所以这样的话就说我们必须要对事务它的这个执行进行一些控制

如果不控制的话,就会产生错误

那么如何对事务的执行进行控制呢

显然就说我们要构造一个事务执行的这个命令的一个正确的执行序列

这个序列我们给它起一个名字,叫做并发调度

那么我们如果用形式化的定义方法呢

我们可以给出这样一段描述

比如说若干个并发执行的事务T1 , T2 ,到Tn 构成一个事务集合

那么如果它们,因为每一个事务它都是一系列的命名,是吧

用一系列的命名组合,组合而成

那么这样的话,就说这样的一组并发事务如果它们当中的一些重要的操作

你比如说重要操作当然是访问相同数据源,这样的一些操作的话

它们这些操作按照一个时间的顺序,给出一个排列来

那么我们可以用一个公式来表达

你比如说这个我们用S来表达一个调度

这个调度呢,正好是一个事务集合

一个事务T这个集合里所有的命令

它的命令是按照时间的这样一个偏序关系来进行排列的话

那么我们就把这个调度叫做一个并发调度

也实际上说的更简单一点就是并发的事务

它们的命令按照时间的这样一个顺序呢

组成的这样一个执行序列,叫做一个并发调度

那么并发调度呢,实际上大家想一想肯定是有的并发调度是正确的

那么有的并发调度肯定是错误的

那么当然我们是希望能够构造一个比较正确的并发调度,是吧

一个正确执行结果是正确的,那么在这个并发调度里面

一个非常这个有特点的,最简单的,最特例的,那就是串行调度

也就是说这个事务集合里面这个T1,T2,Tn

比如说它都是一个事务,比如T1事务执行和T2事务的执行

它们都是要么T1在前,T2在后,要么T2在前,T1在后,是吧

那么它是按照一种串行的这样一种方式执行的话,这种调动叫做串行调动

我们也可能给出它一个形式化的表达,比如在PPT上显示

那么串行调度是最简单的,但是串行调度显然不是我们要的调度

因为如果要用串行的话,那就太简单了

串行调度它的效率比较低,我一个事务执行必须等到另外一个事务结束

那如果我们提交一个的话,那什么时候要执行完了

所以我们实际上是希望来构造一个并发调度

但是呢,我们还要了解,说串行调度是并发调度的一部分

而且我们还要知道,串行调度很容易构造

而且一般的来说串行调度是,只要它与业务规则一致,它就是正确的

那么下面我们再提出另外一个概念,叫做一致性调度

一致性调度就是指说我这个调度如果执行的话

能够让数据库从一个正确的状态,我们也把它叫做一致性的状态

转换成另外一个一致性的状态,也就说这个一致性我们说与业务规则有关

也就说你这个整个的应用系统

它的业务规则是什么样子的,状态就是什么样子的

那么这样来说的话那就是一致性状态显然就是正确的状态

那么从这个角度来说,那我们说串行调度显然实际上

如果它的串行的这个顺序和业务规则一致的话

那它就是不正确调度,它就是一个一致性的调度

那么我们可以用一个例子来看一下,比如说两个事务T1和T2

那么T1是先读X,对它进行一个加,然后再读Y,进行一个减

然后T2是读x进行减,再读y进行一个乘法运算,这两个

我们用前面的例子来看一下

如果T1,T2构成这样的调度

比如说s1,s1是先执行T1,后执行T2

s2是先执行T2,后执行T1,这两个调度就是串行调度

那么都是先执行完一个再执行另外一个事务,这叫串行调度

那么串行调度,我们刚才说了

如果它与业务规则一致的话,那它就是一致性的调度

我们当然,我们要构造调度的话

实际上是希望,构造一个与串行调度结果执行相同的这种并发调度

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

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

-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.练习--作业

高级数据库技术期末试题

-试题--作业

4-1. 并发调度及相关概念 笔记与讨论

也许你还感兴趣的课程:

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