您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第十二讲-分布式事务管理
课程内容安排第一部分关系数据库基本理论关系代数和SQL关系数据库设计关系数据库查询处理与优化关系数据库事务管理第二部分分布式数据库系统理论分布式数据库设计分布式查询处理与优化分布式事务管理分布式恢复管理分布式并发控制分布式事务管理事务的基本概念和特性分布式事务分布式事务的两段提交协议非阻塞分布式事务(三段)提交协议分布式事务管理的实现5.1.1集中式事务概念1、事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。2、事务的特性(ACID特性)原子性(Atomicity)一致性(Consistency)孤立性(Isolation)持久性(Durability)--也称永久性(Permanence)3、保证事务ACID特性是事务处理的任务事务的基本概念事务的定义在SQL语言中,定义事务的语句有三条:BEGINTRANSACTION事务开始COMMIT-----事务提交ROLLBACK-----事务回滚事务的分类:只读型:SETTRANSACTIONREADONLY读/写型:SETTRANSACTIONREADWRITE更新事务的执行要求:更新事务在活动状态下对数据库的任何修改都不能直接在磁盘中进行,而只能在内存缓冲区中进行。事务的状态执行事务事务无法继续正常执行事务回滚,数据库恢复到事务开始前状态昀后一条语句被执行后成功完成,永久写入数据库活动状态失败状态中止状态提交状态部分提交状态事务定义语句与状态的关系ROLLBACKCOMMITBEGINTRANSACTION分布式事务管理事务的基本概念和特性分布式事务分布式事务的两段提交协议分布式事务管理的实现非阻塞分布式事务(三段)提交协议分布式事务分布式事务概念分布式事务过程分布式事务进程结构5.1.2.1分布式事务概念定义:分布式事务对分布式数据库的存取,经转换、分解、优化后,产生一个涉及到用通讯原语联系的、针对多个局部数据的存取操作序列,称为分布执行计划(DEP)。这个分布执行计划可以分解为“涉及相应场地上的局部数据库的操作序列”,即各场地上的子执行计划组成。通常称分布式事务为全局事务,而涉及各相应场地的子执行计划称之为子事务。分布式事务概念分布式事务的一般结构为分布式事务概念分布式事务同样由一组操作序列组成,这些操作分布在多个场地上执行。分布式事务是指分布式数据库应用中的事务,也称全局事务。一个分布式事务在执行时将分解为若干个场地上的独立执行的操作序列,称为子事务。5.1.2.1分布式事务概念分布式事务概念应用分布式事务分布式事务分布式事务子事务子事务子事务子事务子事务子事务分布式事务的实现模型分布式事务在执行时将被分解为若干个和各场地上计算机相关的操作序列,即子事务,和集中式事务一样,分布式事务除了要保证各个子事务的ACID特性外,还需对这些子事务进行协调,决定事务的提交与撤销,以保证全局事务的ACID性。一个分布式事务所要完成的任务是由分布于各个场地上的子事务相互协调合作完成。全局事务的调度保证事务的正确执行,包括涉及各物理场地的局部调度,保证局部数据库的一致,同时也包括通过通讯协议对子事务的执行进行协调,保证全局数据库的一致性。分布式事务的实现模型为完成各场地的子事务的处理,有两种实现模型:进程模型:代理者进程、协调者进程服务器模型:分布式事务的实现模型-进程模型为了保证事务的正确调度执行,全局事务必须为每个子事务在相应场地上的计算机上创建一个代理者进程,称局部进程,来执行该场地上的有关操作。仅当各子事务均正常结束后,分布式事务才可以提交。同时,为协调各子事务的操作,全局事务还要启动一个协调者进程,来进行代理者进程间的通信,来控制和协调各代理者进程的操作。分布式事务的实现模型-进程模型在分布式事务中,由于分布在系统中的多个场地的计算机上执行的子事务之间存在大量的数据及控制信息需要传输,这些传输由系统中提供的通讯原语完成,同时子事务间的协调亦由控制原语完成。分布式事务的实现模型-进程模型发出分布式事务的场地称为该事务的源场地。在源场地上,每个事务有一个根代理进程(简称根代理),即协调者进程,负责创建、启动和协调其他进程。当用户提出一个应用请求时,通常由根代理进程在请求的源场地上创建并启动该事务。同时,为完成事务的操作,在各个执行场地上还要有一个子代理进程(简称子代理),负责接收根代理发给它的命令并创建和执行相应的子事务。分布式事务的实现模型-进程模型全局事务子事务1子事务n协调者进程(根代理进程)代理者进程n代理者进程1分布式事务进程结构为了保证全局数据库的一致性,事务的进程模型要满足:(1)每个应用均有一个根代理(协调者进程),只有根代理才能执行全局事务的开始、提交或废弃等命令。(2)只有根代理才可以请求创建新的子代理。(3)只有当各个子事务均成功提交后,根代理才能决定在全局上提交该事务,否则根代理将决定废弃该事务。分布式事务的实现模型-服务器模型服务器模型:在事务的每个执行场地上创建一个服务器进程,用于执行发生在该场地上的所有子事务。在分布式事务的服务器模型中,每个服务器进程可以交替地为多个子事务服务。也即,如果不同全局事务中的子事务在同一个场地执行,那么它们可以共用一个服务器进程。同进程模型相比,服务器模型减少了进程的创建与切换所带来的开销,但同时降低了数据的分布式处理能力.分布式事务的实现模型-服务器模型全局事务1子事务11子事务m1协调者进程1服务器进程1全局事务m子事务1n子事务mn协调者进程m服务器进程n分布式事务特性与集中式数据库一样具有ACID特性,此外,还有分布式数据库自己的特性:执行特性:必须创建一个控制进程,称协调进程,以协调各子事务的执行操作特性:数据的存取操作序列之外,还必须加入大量的通讯原语,即事务组成复杂,执行方式也复杂控制报文:增加了控制报文,以对各子事务的操作进行协调分布式事务管理目标理想目标:是使事务的执行具有较高的执行效率、可靠性和并发性。具体目标:维护分布事务的原子性、可串行性及隔离性、持久性,尽量减少CPU及内存的开销,减少控制报文传送的次数,加速事务的响应速度,获得昀大的系统可用性分布式事务的提交协议事务的原子性:一个事务的操作要么全部执行,要么全部不执行,保证数据库的状态总是从一个一致的状态变化到另一个一致的状态,而不会出现不一致的中间状态。为了维护分布式事务的原子性,要求分布式事务管理程序具有实现全局原语BeginTransaction、Commit/Abort的能力。全局原语的执行依赖于在各场地上执行的一系列的相应操作,即由全局事务分解的各个子事务或局部操作。分布式事务的提交协议只有当各局部场地上的操作正确执行后,全局事务才可提交,当发生故障要废弃全局事务时,所有局部场地上的操作都应废弃。为了完成全局事务的处理,实现分布式事务的提交,普遍采用两段提交(2PhaseCommit-2PC)协议。分布式事务的两段提交协议(2PC)两段提交协议的两类重要角色协调者:在事务的各个代理中指定一个特殊代理(也称根代理),负责决定所有子事务的提交或废弃。做出提交还是撤销的昀后决定。掌握全局事务提交或废弃的决定权。参与者:除协调者之外的所有其他代理(也称子代理),负责各个子事务的提交或废弃,管理相应子事务的执行。分布式事务的两段提交协议(2PC)基本思想为全部参与者做出提交或中止全部子事务的唯一决定。如果有一个参与者不能提交其子事务,局部子事务全部中止。分布式事务提交,当且仅当全部子事务均提交。2PC协议由两个阶段组成决定阶段:做出提交或中止全部子事务的决定执行阶段:实现第一阶段的决定两段提交协议(2PC)基本流程(1)协调者进程在发出“预提交”命令前,要在日志中记入“开始提交”记录,发送“预提交”命令,要求所有的参与者均进入准备提交阶段,并进入等待回答状态且开始计时。(2)参与者收到“预提交”命令,若准备好了并愿意提交,子事务所在场地的日志中要记录“准备提交”,发送回答“准备提交”,进入准备提交阶段,否则子事务在其日志中要记录“准备废弃”,并回答“准备废弃”,然后进入等待状态,等待协调者的昀终决定。两段提交协议(2PC)基本流程(1)协调者进程(2)参与者(3)协调者从各子事务收到应答,如果所有的子事务均回答了预提交,则全局事务可以提交,在日志中记入“决定提交”记录,向所有参与者发送“全局提交”命令;如果至少有一个子事务回答了Abort,或超时未回答,则全局事务做出夭折的决定,在日志中记入“决定废弃”记录,向所有的参与者发送“提交”或“夭折”命令。(4)所有参与者根据协调者的命令在本场地日志中写入“提交”或“中止”记录),然后执行提交或中止的命令。从此时起,局部恢复程序保证不丢失该子事务的实施,昀后向协调者发出昀终回答。(5)协调者从所有参与者收到执行报文,在日志中记入“完成”记录,此时分布事务的2PC完成。两段提交协议(2PC)基本流程两段提交协议(2PC)的实现方法2PC协议按各参与者之间的通讯结构可以分为集中式方法:指事物间的通信只集中地发生于协调者与参与者之间,而参与者之间不允许直接通信。分布式的2PC:指事物的所有参与者同时也都是协调者,都可以决定事务的提交和废弃,提交过程是完全分布式地完成,由事务的始发场地完成提交的初始化工作。两段提交协议(2PC)的实现方法2PC协议按各参与者之间的通讯结构可以分为分层式方法(树状实现方法):协调者与参与者间的通信结构如同一棵树;协调者所在场地称为树根,参与者构成树的节点或叶子节点。线性方法:事务的始发场地构造一个线性有序的场地表,该表中第一个元素为协调者场地,接下来依次是第一参与者场地名,第二参与者场地名,…,第n参与者场地名两段提交协议(2PC)的实现方法图7.32PC通信结构2PC通信结构非阻塞提交协议-3PC协议事务的阻塞:是指一个场地的子事务本来是可以执行结束的(天折或提交),然而由于分布式数据库的故障,它必须等待故障恢复以后得到需要的信息后才可以做出决定,而故障情况是不可以预料的,该子事务又占有一些系统资源不能释放,没法继续执行,这时称之为事务进入阻塞状态。非阻塞提交协议-3PC协议从2PC到3PC在2PC协议中,参与者的提交是在它知道了其它所有的参与者均发生了“准备提交”的报文以后进行的。若在2PC中增加一段,使得参与者的提交不仅要等到它知道所有的参与者均发出了“准备提交”的报文,而且还要知道所有参与者的状态(如:它们是处于故障状态,还是已经恢复)以后才执行。这时2PC即变成3PC协议。3PC协议的过程第一阶段:投票表决阶段协调者向所有的参与者发“预提交”报文,由每个参与者据自己的情况进行投票,只有收到所有的参与者均赞成提交,才进入第二阶段和第三阶段。第二阶段:准备提交阶段协调者向所有的参与者发“准备提交”报文,参与者收到该报文后若已经准备好提交,则回答“准备就绪”报文,否则进行恢复处理。3PC协议的过程第三阶段:执行阶段当协调者收到所有的参与者“准备就绪”的回答,就向所有的参与者发“提交”报文,此时每个参与者知道其它的参与者将“赞成”提交,并已经进入“准备提交”状态,因此它可以收到“提交”报文后就进行提交。3PC协议三段提交协议是在两段提交协议的执行过程中增加了一个“准备提交”阶段。协调者在接收到所有参与者的赞成票后发送一个“准备提交”命令,当参与者接收到“准备提交”命令之后,它就得知其他的参与者都投了赞成票,从而确定自己稍后肯定会执行提交操作,除非它失败了。协调者一旦接收到所有参与者的“准备就绪”应答就再发出全局“提交”命令。分布式事务管理的实现在分布式数据库系统中,事务管理功能分成两个层次:局部事务管理器(LTM):在每个站点上,有类似于集中式数据库系统中的局部事务管理器(LTM)进行局部事务的管理,负责本站点事务的执行,完成对本站点数据库数据的访问;分布式事务管
本文标题:第十二讲-分布式事务管理
链接地址:https://www.777doc.com/doc-5231800 .html