当前课程知识点:高级数据库系统 >  第十讲 分布式数据库的事务管理及恢复机制 >  2. 分布式事务的两阶段提交协议 >  2. 分布式事务的两阶段提交协议

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

2. 分布式事务的两阶段提交协议在线视频

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

下一节:3.分布式并发控制概述

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

2. 分布式事务的两阶段提交协议课程教案、知识点、字幕

前面说了我们采用代理机制来实现分布式事务的执行

分布式事务执行它也要遵循集中式事务的一些特点

原子性、一致性、永久性和隔离性

对于原子性的要求是非常高的,因为什么呢

因为如果分布式事务不能保证原子性和其他的一些性质的话

将来如果数据库出现一些问题,比如说崩溃了的话

那么我们就没有办法来对它进行恢复

所以尽管它有一些代理机制,我们必须还要对代理机制进行一个规定

或者说我们需要给代理机制的运行给出一些规则

使得我们整个分布式事务在执行的过程当中能够保证它的性质

能够保证我们数据库系统崩溃之后可以恢复到一个正确的状态

这个规则我们把它叫做分布式事务的两阶段提交协议

两阶段提交协议里面我们把根代理作为一个协调点

然后把子事务的子代理作为参与者,我们可以用ppt上的这张图来表示

也就是说在事务执行的过程当中,根代理可以激活子代理

并且向子代理发出一些命令

比如说现在可以提交信息,或者是可以撤销等等这样一些命令

子代理呢,作为一个参与者,他要等待一个协调者所发送的信息

然后准备它下一步的工作,然后它再把它工作的结果反馈给协调者

协调者再根据它收到的反馈信息来进行工作

这是两阶段提交协议里面宏观上它执行的过程

下面我们来看,协调者和参与者他们在整个事务的执行过程当中

它的活动机制是什么呢

它的活动机制实际就相当于把整个活动分成两个阶段

一个阶段叫做表决阶段,表决阶段要做什么事情呢

主要对当前的事务形成一个决定,也就是协调者要写

开始事务的时候要向参与者发出一个准备的命令

这个时候各个参与者要接收到协调者这样一些消息之后

它们就开始检查子事务,然后确定子事务是否提交

然后向协调者发送它们子事务执行的这样一个结果

这样的话如果说执行到一定阶段

协调者肯定要说我现在是不是需要提交事务

大家来发表一下意见,然后协调者就会向参与者发送

比如说我可以准备提交,或者说我不能提交,我必须要撤销事务

它会把这些信息发给协调者

协调者将会根据这些信息来决定事务是不是可以提交

那么在这个过程决定当中采用的是一票否决的制度

只要有一个参与者它没有协调者发出成功提交的表决的话

整个分布式事务就必须要撤销,这就是表决阶段

也就是搜集信息,接下来后面第二个阶段就是执行阶段

执行阶段就是我根据参与者发来的信息

协调者决定我去执行什么样的一个命令,或去执行什么样的一种状态

或者说我是提交事务还是撤销事务

我们可以用一张图来表示一下整个的两阶段提交协议的过程

协调者初始化事务之后,开始进入等待

等待其他的参与者给它发信息,是commit还是撤销

在等待的过程当中它要向参与者发送准备信息

我现在等待你们的信息,我现在准备要表决

所以你们现在要给我发送信息,你们现在是能提交还是不能提交呀

参与者接到协调者这样一个信息之后

它就开始检验它的事务,事务执行到什么程度了

可不可以提交,如果不可以提交的话,它就要写abort日志

然后把撤销事务的日志发送给协调者

如果可以提交的话,它就写ready,也就是准备提交的日志

然后再把commit这样一个信息发送给协调者

协调者再接收这样一些信息进行这样的决定

如果所有的参与者都是commit,那么它就要提交

如果其中有一个参与者不能提交,必须是abort的话

它就必须要写abort日志,然后然后通知所有的参与者现在要撤销事务

尽管前面收到一些子事务给它提交的是commit

它现在也要通知这些事务撤销

如果所有子事务给它提交都是commit的话

他就写commit日志,然后通知所有的事务现在可以提交了

子事务接到协调者的信息,它就可以提交事务

并且写commit日志,当然子代理也就是我们的参与者

在等待协调者的过程当中也可能会出现一些其他的问题

比如说由于网络的问题,它没有及时收到协调者的信息

等一段时间之后它没有收到成功提交的信息,它也有可能会abort

要撤销事务,写abort日志,同时向协调者再发送失败的这样一种信息

这就是两阶段提交协议,我们用这张图来表达它的过程

在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. 分布式事务的两阶段提交协议笔记与讨论

也许你还感兴趣的课程:

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