50
第第第 第第第第第第第第第第第第第第第 第第第 第第第第第第第第第第第第第第第 第第第第 第第第第 : : 第第 第第第 第第第 第第 第第第 第第第

第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

  • Upload
    obert

  • View
    142

  • Download
    0

Embed Size (px)

DESCRIPTION

第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰. 4.1 分布式事务概述 4.2 分布式事务的执行与恢复 4.3 两阶段提交协议 4.4 分布式数据库中的数据更新 4.5 分布式事务增强数据库一致性 4.6 本章小结. 4.1 分布式事务概述. 4.1.1 分布式事务定义和特性 4.1.2 分布式事务的结构和事务状态 4.1.3 分布式事务管理的问题和目标. 4.1.1 分布式事务定义和特性 1. 分布式事务的定义 - PowerPoint PPT Presentation

Citation preview

Page 1: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

第四章 分布式数据库中的事务管理和恢复第四章 分布式数据库中的事务管理和恢复

小组成员小组成员 :: 王波 翟晓玲 翟冰冰王波 翟晓玲 翟冰冰

Page 2: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.1 4.1 分布式事务概述分布式事务概述

4.2 4.2 分布式事务的执行与恢复分布式事务的执行与恢复

4.3 4.3 两阶段提交协议两阶段提交协议

4.4 4.4 分布式数据库中的数据更新分布式数据库中的数据更新

4.5 4.5 分布式事务增强数据库一致性分布式事务增强数据库一致性

4.6 4.6 本章小结本章小结

Page 3: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.1 4.1 分布式事务概述分布式事务概述

4.1.1 4.1.1 分布式事务定义和特性分布式事务定义和特性

4.1.2 4.1.2 分布式事务的结构和事务状态分布式事务的结构和事务状态

4.1.3 4.1.3 分布式事务管理的问题和目标分布式事务管理的问题和目标

Page 4: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.1.1 4.1.1 分布式事务定义和特性分布式事务定义和特性 1.1. 分布式事务的定义分布式事务的定义 事务——是为了实现特定的业务功能,而访问事务——是为了实现特定的业务功能,而访问

数据库的一个最小的逻辑工作单位,它是一个操作数据库的一个最小的逻辑工作单位,它是一个操作序列。序列。

分布式事务——在分布式系统中,任何一个应分布式事务——在分布式系统中,任何一个应用的请求最终都将转化成对分布在网络中相应站点用的请求最终都将转化成对分布在网络中相应站点上数据库存取操作的序列,因此分布式数据库系统上数据库存取操作的序列,因此分布式数据库系统中的事务是一个分布式操作的序列,因被操作的数中的事务是一个分布式操作的序列,因被操作的数据分布在不同的站点上,所以称为分布式事务。据分布在不同的站点上,所以称为分布式事务。

Page 5: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

集中式事务与分布式事务的比较:集中式事务与分布式事务的比较:

继承——外部特性继承——外部特性

扩充——执行方式不同,扩充——执行方式不同, ACIDACID 特性复杂特性复杂

恢复恢复

Page 6: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

在分布式数据库系统中,一个分布式事务即在分布式数据库系统中,一个分布式事务即全局事务,通常由一个主(父)事务和在不同全局事务,通常由一个主(父)事务和在不同站点上执行的子事务(局部事务)组成。站点上执行的子事务(局部事务)组成。 一般的,主事务负责事务的开始,提交和异一般的,主事务负责事务的开始,提交和异常中止。常中止。 各个子事务完成对相应站点上数据库的访问各个子事务完成对相应站点上数据库的访问操作。 操作。 全局事务——一个要求访问或更新多个站点全局事务——一个要求访问或更新多个站点上数据的事务。上数据的事务。 局部事务——一个仅仅访问或更新一个站点局部事务——一个仅仅访问或更新一个站点上数据的事务。上数据的事务。

Page 7: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

2. 2. 分布式事务的特性分布式事务的特性分布式数据库系统中的事务也应具有事务的分布式数据库系统中的事务也应具有事务的 ACIDACID 四个特性。即:四个特性。即: 原子性(原子性( atomicityatomicity )——指事务执行时的不可分割性。这)——指事务执行时的不可分割性。这

个特性确保了每个事务要么全部发生,要么全部不发生。如果个特性确保了每个事务要么全部发生,要么全部不发生。如果发生,就是不可分割的瞬间的操作。当一个事务处在处理过程发生,就是不可分割的瞬间的操作。当一个事务处在处理过程中时,其他进程(无论是否与事务有关)都不能看到任何中间中时,其他进程(无论是否与事务有关)都不能看到任何中间状态。状态。

一致性(一致性( consistencyconsistency )——指事务的正确性,或者说一)——指事务的正确性,或者说一个分布式事务是一个使分布式数据库从一个一致状态转变为另个分布式事务是一个使分布式数据库从一个一致状态转变为另一个状态的正确程序。例如在一个银行系统中,最关键的不变一个状态的正确程序。例如在一个银行系统中,最关键的不变性是资金守恒规则。在任何内部转帐之后,银行的资金账目应性是资金守恒规则。在任何内部转帐之后,银行的资金账目应与转帐前保持一致,但是在事务执行的短暂时刻内,这种不变与转帐前保持一致,但是在事务执行的短暂时刻内,这种不变性会受到损害。然后,事务结束之后,这种损害就没有了。如性会受到损害。然后,事务结束之后,这种损害就没有了。如果若干个事务并发执行的结果与按希望的顺序串行执行的结果果若干个事务并发执行的结果与按希望的顺序串行执行的结果时等价的,称该若干个事务的并发执行是可串行的,且其结果时等价的,称该若干个事务的并发执行是可串行的,且其结果是正确的。因此,一致性特征也用可串行性(是正确的。因此,一致性特征也用可串行性( serializabilitserializabilityy )特征表示,此时,事务具有)特征表示,此时,事务具有 ASIDASID 特性。特性。

Page 8: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

隔离性(隔离性( isolatyisolaty )——指在一个正在执行的事务在其提交之前,)——指在一个正在执行的事务在其提交之前,决不允许把它对共享的数据所作改变的结果提供给其他事务使决不允许把它对共享的数据所作改变的结果提供给其他事务使用。这就是说,事务的执行似乎与其他事务相隔离,即事务的用。这就是说,事务的执行似乎与其他事务相隔离,即事务的执行不应受到其他并发事务执行的干扰。保持事务的隔离性是执行不应受到其他并发事务执行的干扰。保持事务的隔离性是有许多原因的,保证维护事务的交互一致性是原因之一。有许多原因的,保证维护事务的交互一致性是原因之一。

耐久性(耐久性( durabilitydurability )——指一旦某个事务被提交了,则无论)——指一旦某个事务被提交了,则无论系统发生任何故障,都不会丢失该事务的执行结果。这就是说,系统发生任何故障,都不会丢失该事务的执行结果。这就是说,已提交事务对数据库的改变在数据库中应该是持续存在的,这已提交事务对数据库的改变在数据库中应该是持续存在的,这些改变不会因为故障而发生丢失。些改变不会因为故障而发生丢失。

Page 9: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

例如:例如: 某银行的存款系统,账号某银行的存款系统,账号 001001 的存款余额为的存款余额为 00元。元。

分布式事务分布式事务 TT 由两个子事务由两个子事务 T1T1 和和 T2T2 组成。站点组成。站点 ii上的事务上的事务 T1T1 在在 001001 账号中存入账号中存入 10001000元。如果在事元。如果在事务务 T1T1还未提交之前,站点还未提交之前,站点 jj 上的事务上的事务 T2T2读取此读取此 10100000元,并从元,并从 001001 账号中取走账号中取走 10001000元,事务元,事务 T2T2 提提交,此时现金交,此时现金 10001000元就交给事务元就交给事务 T2T2 的用户。假定的用户。假定此时因某种原因,使事务此时因某种原因,使事务 T1T1 的存款操作无效,即的存款操作无效,即事务事务 T1T1撤销。事务撤销。事务 T1T1 的撤销要求事务的撤销要求事务 T2T2 也撤销,也撤销,因为事务因为事务 T2T2 的操作是建立在事务的操作是建立在事务 T1T1 操作的基础上操作的基础上的。但是此时要撤销事务的。但是此时要撤销事务 T2T2 的操作是不可能的了,的操作是不可能的了,因为事务因为事务 T2T2 已经提交,其产生的结果是无法由系已经提交,其产生的结果是无法由系统来撤销的。统来撤销的。

Page 10: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

由于分布式数据库的分布特性,使得分布由于分布式数据库的分布特性,使得分布式事务还具有自己独有的特性:在分布式事务式事务还具有自己独有的特性:在分布式事务中,除需要考虑访问数据库的存取操作序列外中,除需要考虑访问数据库的存取操作序列外,还必须考虑大量的数据传送,通信原语和控,还必须考虑大量的数据传送,通信原语和控制报文等,这些都是分布式事务所特有的性质。制报文等,这些都是分布式事务所特有的性质。

Page 11: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.1.2 4.1.2 分布式事务的结构和事务状分布式事务的结构和事务状态态

Page 12: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

应用

1.1. 分布式事务的结构分布式事务的结构

分布式事务 分布式事务 分布式事务

子事务

子事务

子事务

子事务

子事务

子事务

Page 13: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

分布式事务的一般结构为:分布式事务的一般结构为: Begin Transaction Begin Transaction 原语:开始一个事务原语:开始一个事务 T1 [T1 [ T2 [T2 [ : 子事务或操作序列: 子事务或操作序列 :: Tn [Tn [ Commit Commit 原语:事务成功完成的结束原语:事务成功完成的结束

RollBack RollBack 或或 AbortAbort 原语:事务失败的结束 原语:事务失败的结束

Page 14: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

2. 2. 分布式数据库中进程的协作分布式数据库中进程的协作

(( 11 )两个概念)两个概念进程进程 : : 是一个具有一定独立功能的程序关于某个数据集合的一次运是一个具有一定独立功能的程序关于某个数据集合的一次运 行活动。行活动。它有两个侧面 它有两个侧面 : : 进程说明 :定义进程的行为模式进程说明 :定义进程的行为模式 , , 包括数据和对数据的一组包括数据和对数据的一组 操作操作 , , 执行这组操作执行这组操作 , , 完成某一功能。完成某一功能。 进程执行:按进程说明中所定义的模式来启动这个进程,执 进程执行:按进程说明中所定义的模式来启动这个进程,执 行其中的那组操作。行其中的那组操作。事务代理(事务代理( AgentAgent ):在分布式数据库系统中,为了完成在不同站 ):在分布式数据库系统中,为了完成在不同站 点上的相应功能,分布式应用必须在这些站点中执行若干进点上的相应功能,分布式应用必须在这些站点中执行若干进 程,这些进程就称为该应用在那个站点上的“事务代理”。程,这些进程就称为该应用在那个站点上的“事务代理”。

所 所 以,一个事务代理是一个本地进程,它代表应用来执行某些以,一个事务代理是一个本地进程,它代表应用来执行某些

动作。启动一个事务造成在某一站点开始执行那个事务动作。启动一个事务造成在某一站点开始执行那个事务代 代

理。这个事务代理的执行又可能引起在另一个站点开始理。这个事务代理的执行又可能引起在另一个站点开始执行执行 另一个事务。另一个事务。

Page 15: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

(( 22 )进程的协作)进程的协作 为了协调地执行分布式应用的全局操作,分驻于不为了协调地执行分布式应用的全局操作,分驻于不

同站点的诸事务代理必须进行协调。为考虑事务的特性,同站点的诸事务代理必须进行协调。为考虑事务的特性,把各站点上的诸代理组建成协作进程来完成一个全局应把各站点上的诸代理组建成协作进程来完成一个全局应用,并作如下规定:用,并作如下规定:

11 )每一应用均有一个负责启动整个事务的总代理)每一应用均有一个负责启动整个事务的总代理或称根代理,建立总代理的站点称为源站点;或称根代理,建立总代理的站点称为源站点;

22 )只有总代理才能发出全局有效的事务开始,提)只有总代理才能发出全局有效的事务开始,提交和撤销原语;交和撤销原语;

33 )只有总代理才能请求建立新的事务代理;)只有总代理才能请求建立新的事务代理; 44 )各站点上的子事务都执行成功,总代理才能)各站点上的子事务都执行成功,总代理才能

决定提交该事务,否则总代理将决定撤销该事务。决定提交该事务,否则总代理将决定撤销该事务。

Page 16: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

FUND_TRANSFER:FUND_TRANSFER:

Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC); Begin_Transaction;Begin_Transaction; Select AMOUNT into $FROM_AMOUNT from ACCOUNTSelect AMOUNT into $FROM_AMOUNT from ACCOUNT where ACCOUNT_NUMBER=$FROM_ACC;where ACCOUNT_NUMBER=$FROM_ACC; if $FROM_AMOUNT-$AMOUNT<0 then abortif $FROM_AMOUNT-$AMOUNT<0 then abort else beginelse begin Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNTUpdate ACCOUNT set AMOUNT=AMOUNT-$AMOUNT where ACCOUNT_NUMBER=$FROM_ACC;where ACCOUNT_NUMBER=$FROM_ACC; Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNTUpdate ACCOUNT set AMOUNT=AMOUNT-$AMOUNT where ACCOUNT_NUMBER=$TO_ACC;where ACCOUNT_NUMBER=$TO_ACC; CommitCommit endend 图图 4.14.1 全局级的全局级的 FUND_TRANSFERFUND_TRANSFER 事务事务

Page 17: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

ROOT_AGENT AGENT:ROOT_AGENT AGENT:

输入:汇出金额和转出 /转入账号

事务开始:检查转出账号中是否又足够的转出资金

更新转出账号存款余额创建代理 Agent

向代理送信息:转入帐号,金额

等待来自 Agent的消息

成功

提交事务:成功结束

撤销事务:失败结束

接收来自根代理的消息

更新转入账号存款余额

发送执行消息给根代理(成功或失败)

Page 18: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

ROOT-AGENTROOT-AGENT;; Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC); Begin_transaction;Begin_transaction; Select AMOUNT into $FROM_AMOUNT from ACCOUNTSelect AMOUNT into $FROM_AMOUNT from ACCOUNT where ACCOUNT_NUMBER = $FROM_ACCOUNT;where ACCOUNT_NUMBER = $FROM_ACCOUNT; if $FROM_AMOUNT-$AMOUNT<0 then abortif $FROM_AMOUNT-$AMOUNT<0 then abort else beginelse begin Update ACCOUNT set AMOUNT = AMOUNT-$AMOUNT Update ACCOUNT set AMOUNT = AMOUNT-$AMOUNT where ACCOUNT = $FROM_ACC;where ACCOUNT = $FROM_ACC; Create AGENT;Create AGENT; SEND to AGENT($AMOUNT,$TO_ACC);SEND to AGENT($AMOUNT,$TO_ACC); CommitCommit endendAGENT;AGENT; Receive from ROOT_AGENT($AMOUNT,$TO_ACC);Receive from ROOT_AGENT($AMOUNT,$TO_ACC); Update ACCOUNT set AMOUNT = AMOUNT + $AMOUNTUpdate ACCOUNT set AMOUNT = AMOUNT + $AMOUNT where ACCOUNT = $TO_ACC;where ACCOUNT = $TO_ACC; Send to ROOT_AGENT(‘SUCCESS’/’FALL’) Send to ROOT_AGENT(‘SUCCESS’/’FALL’)

图图 4.34.3 两个代理组成的两个代理组成的 FUND_TRANSFERFUND_TRANSFER 事务事务

Page 19: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.1.3 4.1.3 分布式事务管理的问题和目标分布式事务管理的问题和目标1.1. 分布式事务管理的问题分布式事务管理的问题 (( 11 )处理数据项的多个副本)处理数据项的多个副本 分布式事务管理负责保持同一数据的多个副本间的分布式事务管理负责保持同一数据的多个副本间的

一致性。一致性。 (( 22 )单个站点的故障)单个站点的故障 当故障站点得到恢复时,当故障站点得到恢复时, DDBMSDDBMS 协同该故障站协同该故障站

点上的点上的 DBMSDBMS ,必须在该站点与系统重新连接时,使,必须在该站点与系统重新连接时,使它的局部数据与其他站点同步。它的局部数据与其他站点同步。

(( 33 )通信网络的故障)通信网络的故障 系统必须有能力处理一个或多个连接站点的通信网系统必须有能力处理一个或多个连接站点的通信网

络故障。这个问题的一个极端情况是发生网络分割。络故障。这个问题的一个极端情况是发生网络分割。 (( 44 )分布式提交)分布式提交 如果在提交一个分布式事务过程中至少有一个站如果在提交一个分布式事务过程中至少有一个站

点发生故障的话,那么这个分布式事务的提交将会产点发生故障的话,那么这个分布式事务的提交将会产生问题。生问题。

Page 20: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

2.2. 分布式事务管理的目标分布式事务管理的目标 事务管理的任务就是负责当若干个事务并发执行和事事务管理的任务就是负责当若干个事务并发执行和事务执行发生错误时,使数据库仍保持一致状态。务执行发生错误时,使数据库仍保持一致状态。

Page 21: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

例如:例如: 某公司在银行中有某公司在银行中有 A,BA,B 两个账号,现在公司想从账号两个账号,现在公司想从账号 AA

中取出一万元,存入账号中取出一万元,存入账号 BB 。那么就可以定义一个事务,。那么就可以定义一个事务,该事务包括两个操作,第一个操作是从账号该事务包括两个操作,第一个操作是从账号 AA 中减去一中减去一万元,第二个操作是向账号万元,第二个操作是向账号 BB 中加入一万元。在事务开中加入一万元。在事务开始时,数据库是处于一个一致性状态。在事务执行时,始时,数据库是处于一个一致性状态。在事务执行时,如果只做第一个操作则用户逻辑上就会发生错误,少了如果只做第一个操作则用户逻辑上就会发生错误,少了一万元,这时数据库就处于非一致性状态。当我们接着一万元,这时数据库就处于非一致性状态。当我们接着做第二个操作,且成功提交后,数据库又处在了一致性做第二个操作,且成功提交后,数据库又处在了一致性的状态。的状态。

Page 22: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

事务管理所追求的理想目标是高执行效率,高并行性事务管理所追求的理想目标是高执行效率,高并行性和高可靠性。这三大理想目标往往不能兼得,因为他们之和高可靠性。这三大理想目标往往不能兼得,因为他们之间密切相关,而又矛盾。可靠性措施会使效率下降,而事间密切相关,而又矛盾。可靠性措施会使效率下降,而事务运行效率不仅取决于采用的策略,还与下列因素有关:务运行效率不仅取决于采用的策略,还与下列因素有关: (( 11 )) CPUCPU 和主存利用率和主存利用率 (( 22 )控制报文)控制报文 (( 33 )相应时间)相应时间 (( 44 )可用性)可用性由此可见事务管理的目标是:由此可见事务管理的目标是: (( 11 )维护分布式事务的原子性,一致性,耐久性和)维护分布式事务的原子性,一致性,耐久性和

隔隔离性。离性。 (( 22 )获得最小的主存和)获得最小的主存和 CPUCPU 开销,降低控制报文的开销,降低控制报文的传传输个数和加快分布式事务的响应速度;输个数和加快分布式事务的响应速度; (( 33 )获得最大限度的系统可靠性和可用性。)获得最大限度的系统可靠性和可用性。

Page 23: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.2 4.2 分布式事务的执行与恢复分布式事务的执行与恢复

Page 24: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.2.1 4.2.1 分布式事务管理的抽象模型分布式事务管理的抽象模型 在分布式数据库系统中,事务管理功能分成两在分布式数据库系统中,事务管理功能分成两个层次。个层次。 在每个站点上,又类似于集中式数据库系统中在每个站点上,又类似于集中式数据库系统中的局部事务管理器(的局部事务管理器( LTMLTM )进行局部事务的管理,)进行局部事务的管理,负责本站点事务的执行,完成对本站点数据库数据负责本站点事务的执行,完成对本站点数据库数据的访问;的访问; 对整个分布式数据库系统,由驻留在各个站点对整个分布式数据库系统,由驻留在各个站点上的分布式事务管理器(上的分布式事务管理器( DTMDTM )共同协作,实现)共同协作,实现对分布式事务的协调和管理。对分布式事务的协调和管理。

Page 25: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

图图 4.54.5 分布式事务管理的抽象模型分布式事务管理的抽象模型

站 点 1

站 点 3

站 点 2

本地事务管理器LTM1

分布式事务管理器DTM1

分布式事务管理器DTM1

本地事务管理器LTM2

分布式事务管理器DTM1

本地事务管理器LTM3

Page 26: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

局部事务管理器局部事务管理器 LTMLTM 的结构和功能在许多方面的结构和功能在许多方面与集中式系统类似,主要包括:与集中式系统类似,主要包括: (( 11 )保证本地事务的)保证本地事务的 ACIDACID 特性;特性; (( 22 )维护一个用于恢复的日志,代替)维护一个用于恢复的日志,代替 DTMDTM 把把用于分布式事务执行和恢复的信息记入日志。用于分布式事务执行和恢复的信息记入日志。 (( 33 )参与适当的并发控制模式,以协调在该站)参与适当的并发控制模式,以协调在该站点上执行的事务的并发执行。接收并听从本站点上点上执行的事务的并发执行。接收并听从本站点上DTMDTM代理发来的代理发来的 LOGLOG 原语,记入日志并执行之。原语,记入日志并执行之。LOGLOG 原语包括:原语包括: local begin_transaction,local begin_transaction, local commitlocal commit local abort local abort

Page 27: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

分布式事务管理器分布式事务管理器 DTMDTM 的功能包括:的功能包括: (( 11 )保证分布式事务的)保证分布式事务的 ACIDACID 特性,尤其是执行分特性,尤其是执行分

布布式事务的原子性式事务的原子性 ,, 使每个站点的子事务都成功执行,或都使每个站点的子事务都成功执行,或都不执行。这是通过向各个站点发不执行。这是通过向各个站点发begin_transaction,commitbegin_transaction,commit 或或 abort,createabort,create 原语来实原语来实

现的。现的。 (( 22 )负责协调由该站点发出的所有分布式事务的执)负责协调由该站点发出的所有分布式事务的执行。包括:启动分布式事务的执行;将分布式事务分解为行。包括:启动分布式事务的执行;将分布式事务分解为一些子事务,并将这些子事务分派到恰当的站点上去执一些子事务,并将这些子事务分派到恰当的站点上去执行;决定分布式事务的终止,即决定在该分布式事务中所行;决定分布式事务的终止,即决定在该分布式事务中所包含的所有站点上的子事务都撤销或都提交。包含的所有站点上的子事务都撤销或都提交。

Page 28: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

(( 33 )支持分布式事务的执行位置透明性,这也是)支持分布式事务的执行位置透明性,这也是分分

布式事务管理的最基本要求。分布式事务管理器根布式事务管理的最基本要求。分布式事务管理器根据事务内部的逻辑划分为若干子事务,按某种要求据事务内部的逻辑划分为若干子事务,按某种要求分布到相应站点上执行,最后由源发站点提供事务分布到相应站点上执行,最后由源发站点提供事务的最终结果。它实现了对网络上各站点的各个子事的最终结果。它实现了对网络上各站点的各个子事务的监督与管理,完成对整个分布式事务执行过程务的监督与管理,完成对整个分布式事务执行过程的调度和管理,从而保证分布式数据库系统的高效的调度和管理,从而保证分布式数据库系统的高效率。率。

Page 29: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.2.2 4.2.2 分布式事务执行的控制模型分布式事务执行的控制模型 分布式事务的控制模型是指协调分布式事务中分布式事务的控制模型是指协调分布式事务中各成员各成员 DBMSDBMS 执行其子事务的通用方法;执行其子事务的通用方法; 控制分布式事务执行的控制模型有控制分布式事务执行的控制模型有 :: 11 )主从模型)主从模型 22 )三角模型)三角模型 33 )层次控制模型)层次控制模型

Page 30: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

图图 4.6 4.6 分布式执行的主从控制模型分布式执行的主从控制模型

Page 31: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

图图 4.7 4.7 分布式执行的三角控制模型分布式执行的三角控制模型

Page 32: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

图图 4.8 4.8 分布式执行的层次控制模型分布式执行的层次控制模型

Page 33: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.2.34.2.3 分布式数据库系统中的故障分布式数据库系统中的故障

Page 34: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.2.44.2.4 事务故障恢复的基本概念事务故障恢复的基本概念 研究数据库系统中故障的恢复,主要是指如何恢复因研究数据库系统中故障的恢复,主要是指如何恢复因故障而破坏的数据库,使数据库恢复到一个正确,一致的故障而破坏的数据库,使数据库恢复到一个正确,一致的状态。恢复的基本原理是数据冗余,即利用冗余存储在别状态。恢复的基本原理是数据冗余,即利用冗余存储在别处的信息和数据,部分或全部重建数据库。处的信息和数据,部分或全部重建数据库。1. 1. 事务故障和事务恢复事务故障和事务恢复 当发生事务故障时,保证事务原子性的措施称为事务当发生事务故障时,保证事务原子性的措施称为事务故障恢复,简称为事务恢复。故障恢复,简称为事务恢复。 事务恢复主要时依靠日志来实现的。事务恢复主要时依靠日志来实现的。2. 2. 事务状态及状态转移事务状态及状态转移 为保证可恢复性,系统需要保存事务的起始,终止,为保证可恢复性,系统需要保存事务的起始,终止,提交或撤销的时间轨迹,事务恢复管理器还对下列操作进提交或撤销的时间轨迹,事务恢复管理器还对下列操作进行跟踪记录。行跟踪记录。

Page 35: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

1) begin transaction:1) begin transaction: 标记事务开始执行。标记事务开始执行。2) read2) read 或或 write:write: 表示事务对某个数据项进行读或写。表示事务对某个数据项进行读或写。3) End _transaction:3) End _transaction: 表示事务的读或写操作已经结束,并表示事务的读或写操作已经结束,并标记事务执行结束。但是,在这一点,需要检查被该事务标记事务执行结束。但是,在这一点,需要检查被该事务所作的改变是否永久写入数据库(已提交),或事务由于所作的改变是否永久写入数据库(已提交),或事务由于违反可串行性或其他原因而被撤销。违反可串行性或其他原因而被撤销。4) commit_transaction4) commit_transaction :表示事务已经成功结束:表示事务已经成功结束 ,, 因此事因此事

务务执行的任何改变可以安全提交到数据库并且不会被撤销。执行的任何改变可以安全提交到数据库并且不会被撤销。5) rollback(5) rollback( 或 或 abort)abort) :表示事务没有成功结束:表示事务没有成功结束 ,, 因此必因此必须撤须撤销事务对数据库所作的任何改变或影响。销事务对数据库所作的任何改变或影响。

Page 36: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

read/writeread/write

Begin endBegin end transaction transaction commit transaction transaction commit

abort abortabort abort

activePartially

committed committed

failed terminated

Page 37: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

3.3. 事务的提交点事务的提交点 当事务当事务 TT 所有的站点数据库存取操作都已成功执行,所有的站点数据库存取操作都已成功执行,并且所有操作对数据库的影响都已记录在日志中时,该事并且所有操作对数据库的影响都已记录在日志中时,该事务务 TT 就到达提交点就到达提交点 (committed point).(committed point). 提交点后事务就成为提交点后事务就成为已提交的事务,并且假定其结果已永久记录在数据库中已提交的事务,并且假定其结果已永久记录在数据库中(( 事务的永久性事务的永久性 )) 。然后事务在日志中写入提交记录。然后事务在日志中写入提交记录[commit,T].[commit,T]. 在系统发生故障时,需要扫描日志,检查那在系统发生故障时,需要扫描日志,检查那些已在日志中写入些已在日志中写入 [start_transaction,T],[start_transaction,T], 但没有写入但没有写入[commit,T][commit,T] 的所有事务的所有事务 TT;恢复时必须回滚这些事务以取;恢复时必须回滚这些事务以取消他们对数据库的影响。此外,还必须对日志中记录的已消他们对数据库的影响。此外,还必须对日志中记录的已提交事务的所有写操作进行恢复,这样他们对数据库的作提交事务的所有写操作进行恢复,这样他们对数据库的作用才可根据这些记录重做。用才可根据这些记录重做。 需要注意的是,必须将日志文件保存在磁盘上。在事需要注意的是,必须将日志文件保存在磁盘上。在事务到达提交点以前,还未写到磁盘的日志的任何部分,必务到达提交点以前,还未写到磁盘的日志的任何部分,必须被写入磁盘,这称为事务提交前强制写须被写入磁盘,这称为事务提交前强制写 (force writing)(force writing)日日志。志。

Page 38: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.4.日志,档案库和检查点日志,档案库和检查点(1)(1)日志日志 为了能够从故障状态中恢复由影响的事务,系统维为了能够从故障状态中恢复由影响的事务,系统维护一个日志护一个日志 (log)(log)来保存所有影响数据库项的值的事务操来保存所有影响数据库项的值的事务操

作作的信息,这些信息可以用于故障时的恢复。日志保存在磁的信息,这些信息可以用于故障时的恢复。日志保存在磁盘上,这样除了磁盘和灾难性故障外,它不会受到任何影盘上,这样除了磁盘和灾难性故障外,它不会受到任何影响。另外,日志会被定期备份到归档存储设备(例如磁响。另外,日志会被定期备份到归档存储设备(例如磁带)中,以预防磁盘和灾难性故障。下面列出的是日志的带)中,以预防磁盘和灾难性故障。下面列出的是日志的条目类型(称为日志记录)和每个类型设计的相关动作。条目类型(称为日志记录)和每个类型设计的相关动作。在条目中。在条目中。 TT 表示唯一事务标识表示唯一事务标识 (transaction_id)(transaction_id) 用于用于

标识标识每个事务,通常由系统自动生成:每个事务,通常由系统自动生成:

Page 39: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

1)1) [start_transaction,T]:[start_transaction,T]: 表示事务表示事务 TT 开始执行。开始执行。2)2) [write_item,T,X,[write_item,T,X,旧值旧值 ,, 新值新值 ]:]: 表示事务表示事务 TT 已已

将数据项将数据项 XX 的值从旧值改为新值。的值从旧值改为新值。3)3) [read_item,T,X]:[read_item,T,X]: 表示事务表示事务 TT 已读取数据项已读取数据项 XX

的值。的值。4)4) [commit,T]:[commit,T]: 表示事务表示事务 TT 已成功完成,其结果已成功完成,其结果

已被提交已被提交 ((永久记录永久记录 )) 给数据库。给数据库。5)5) [abort,T]:[abort,T]: 表示事务表示事务 TT 已被撤销。已被撤销。6)6) Log:Log:记录长度及用于恢复过程的辅助信息,如记录长度及用于恢复过程的辅助信息,如

指向本事务前一日志记录的指针,检查点记录指向本事务前一日志记录的指针,检查点记录等等。。

Page 40: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

(2)(2)档案库档案库 一个大型的系统一天可以很容易地产生大量的一个大型的系统一天可以很容易地产生大量的 LogLog记记录.因此,将日志全部存放在盘中是不现实的。故一般将录.因此,将日志全部存放在盘中是不现实的。故一般将日志划分为两部分,一部分是当前活动的联机部分,存放日志划分为两部分,一部分是当前活动的联机部分,存放在直接存取设备上,称为直接存取数据集在直接存取设备上,称为直接存取数据集 (direct access (direct access data set)data set) 或简称日志数据集或简称日志数据集 (log data set).(log data set). 另一部分是档另一部分是档案案

存储部分,存放在二级存储设备上,例如磁带上。每当数存储部分,存放在二级存储设备上,例如磁带上。每当数据集满时就转存到档案存储设备中去。存放日志的档案存据集满时就转存到档案存储设备中去。存放日志的档案存储设备称日志档案库储设备称日志档案库 (log archive).(log archive). 为了防止因介质故障而破坏数据库,要定期将整个数为了防止因介质故障而破坏数据库,要定期将整个数据库的全部内容转储到档案库中去。存放数据库的档案存据库的全部内容转储到档案库中去。存放数据库的档案存储设备称数据库档案库储设备称数据库档案库 (DB archive).(DB archive).

Page 41: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

(3) (3) 检查点检查点 为了便于恢复,在日志中增加一类新的记录——检查点为了便于恢复,在日志中增加一类新的记录——检查点(checkpoint),(checkpoint),以标识检查点前已执行完的事务是正确的,增加一以标识检查点前已执行完的事务是正确的,增加一

个个重启动文件。重启动文件。检查点记录的内容包括:检查点记录的内容包括: 1 1 建立检查点时刻所有正在执行的事务清单。建立检查点时刻所有正在执行的事务清单。 2 2 这些事务最近一个日志记录的地址。这些事务最近一个日志记录的地址。重启动文件记录各个检查点记录在日志文件中的地址。重启动文件记录各个检查点记录在日志文件中的地址。每遇检查点,就做如下工作:每遇检查点,就做如下工作: 1) 1) 将将 LogLog 缓冲区内容写入缓冲区内容写入 Log Data SetLog Data Set中;中; 2) 2) 在在 Log Data SetLog Data Set中写入这次检查点记录信息:当前活动事中写入这次检查点记录信息:当前活动事务表,每一事务最近一次务表,每一事务最近一次 LogLog记录在记录在 Log Data SetLog Data Set中的位置;中的位置; 3) 3) 将将 DBDB 缓冲区内容写入缓冲区内容写入 DB (DB (更新当前更新当前 DB)DB) ;; 4) 4) 将这次将这次 Checkpoint RecordCheckpoint Record在在 Log Data SetLog Data Set中的地址记中的地址记入”重启动文件”中。入”重启动文件”中。

Page 42: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

在写检查点时,为了保证检查点之前所作的工在写检查点时,为了保证检查点之前所作的工作都是有效的,防止故障引起缓冲区信息的丢失,作都是有效的,防止故障引起缓冲区信息的丢失,因此在写检查点时要将缓冲区中的所有内容写入到因此在写检查点时要将缓冲区中的所有内容写入到永久存储设备中,而且采取 “先写日志”的原则。永久存储设备中,而且采取 “先写日志”的原则。 使用检查点方法可以改善恢复效率。当事务使用检查点方法可以改善恢复效率。当事务 TT在在一个检查点之前提交,一个检查点之前提交, TT对数据库所做的修改一定对数据库所做的修改一定

都都已写入数据库,写入时间是在这个检查点建立之前已写入数据库,写入时间是在这个检查点建立之前或在这个检查点建立之时。这样在进行恢复处理或在这个检查点建立之时。这样在进行恢复处理时,没有必要对事务时,没有必要对事务 TT执行执行 REDOREDO操作。操作。

Page 43: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

系统出现故障时恢复子系统将根据事务的不同状态采取不系统出现故障时恢复子系统将根据事务的不同状态采取不同的恢复策略,如图:同的恢复策略,如图: Tc(Tc(检查点检查点 ) Tf) Tf (系统故障)(系统故障)

时间时间

t1 t1 不要不要 REDOREDO

t2 REDOt2 REDO

t3 t3 撤销撤销 t4 REDOt4 REDO

t5 t5 撤销撤销 T1T1 :在检查点之前提交。:在检查点之前提交。 T2T2 :在检查点之前开始执行,在检查点之后故障点之前提交。:在检查点之前开始执行,在检查点之后故障点之前提交。

T3T3 :在检查点之前开始执行,在故障点时还未完成。:在检查点之前开始执行,在故障点时还未完成。T4T4 :在检查点之后开始执行,在故障点之前提交。:在检查点之后开始执行,在故障点之前提交。T5T5 :在检查点之后开始执行,在故障点时还未完成。:在检查点之后开始执行,在故障点时还未完成。

Page 44: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.2.5 4.2.5 事务故障的恢复事务故障的恢复1.1. 事务恢复的原则事务恢复的原则 (1)(1)孤立和逐步退出事务的原则孤立和逐步退出事务的原则 对于不影响其他事务的可排除性局部故障.例如事务操作的删对于不影响其他事务的可排除性局部故障.例如事务操作的删除、超时、违反完整性规则、资源、限制、死锁等,应令某个事务除、超时、违反完整性规则、资源、限制、死锁等,应令某个事务孤立地和逐步地退出.将其所做过的修改复原,即做孤立地和逐步地退出.将其所做过的修改复原,即做 UND0UND0 。。 (2)(2) 成功结束事务原则成功结束事务原则 成功结束事务所做过的修改应超越各种故障而存在成功结束事务所做过的修改应超越各种故障而存在 ,, 也就是重做也就是重做(REDO)(REDO) 它所做过的所有修改数据库的操作。它所做过的所有修改数据库的操作。 (3)(3)夭折事务的原则夭折事务的原则 若发生了非局部性的不可排除的故障,例如系统崩溃,则撤消若发生了非局部性的不可排除的故障,例如系统崩溃,则撤消全部事务,恢复到初态:这有两种做法,一种是利用数据库的备份全部事务,恢复到初态:这有两种做法,一种是利用数据库的备份实现;另一种是按逆向顺序操作,复原其启动以来所做过的一切修实现;另一种是按逆向顺序操作,复原其启动以来所做过的一切修改。改。

Page 45: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

2.2. 本地事务的恢复本地事务的恢复 本地事务的恢复过程类似于集中式数据库系统中事务本地事务的恢复过程类似于集中式数据库系统中事务的恢复。当故障排除后,由局部事务管理器的恢复子系统的恢复。当故障排除后,由局部事务管理器的恢复子系统执行事务恢复,过程如图执行事务恢复,过程如图 4.114.11 所示。所示。

Page 46: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

(1)(1) 从“重启动文件”中读出最近的从“重启动文件”中读出最近的 Checkpoint RecordCheckpoint Record 的地的地址,定出址,定出 Checkpoint RecordCheckpoint Record 在在 Log Data SetLog Data Set 中的地址;中的地址;(2)(2)创建创建 REDOREDO 表,初态为空表,初态为空 ::创建创建 UNDOUNDO 表表 ,, 将将 CheckpoiCheckpoi

nt nt RecordRecord 中的活动事务表内容复制到中的活动事务表内容复制到 UNDOUNDO 表;表;(3)(3) 从从 Checkpoint RecordCheckpoint Record起沿起沿 LogLog向前检索,遇向前检索,遇 begin begin transactiontransaction 的的 LogLog记录.将对应的事务记入记录.将对应的事务记入 UND0UND0 表;遇表;遇commitcommit 的的 LogLog记录记录 ,, 将对应的事务从将对应的事务从 UNDOUNDO 表移入表移入 REDOREDO

表表 ,,直到直到 LogLog 完。完。(4)(4)反向检索反向检索 Log,Log, 将将 UNDOUNDO 表中的事务表中的事务 ,, 按按 LogLog记录的操作,记录的操作,做做 UNDOUNDO ,直到遇对应的,直到遇对应的 begin transactionbegin transaction 。。(5) (5) 再从再从 Checkpoint RecordCheckpoint Record起正向检索起正向检索 REDOREDO 表中事务的 表中事务的 LogLog记录,并执行之,直到对应的记录,并执行之,直到对应的 commitcommit记录。记录。

Page 47: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

3.3. 分布式事务的恢复分布式事务的恢复 在分布式事务恢复中,本地事务的恢复类同于集中式事在分布式事务恢复中,本地事务的恢复类同于集中式事

务的恢复,由本地事务管理器具体执行;而整个分布式务的恢复,由本地事务管理器具体执行;而整个分布式事务的恢复由分布式事务管理器与本地事务管理器协同事务的恢复由分布式事务管理器与本地事务管理器协同完成。完成。

(1)(1)底层:为本地事务管理器层底层:为本地事务管理器层 .. 这些这些 LTMLTM 之间不需要之间不需要进行通信联系,它们执行上层进行通信联系,它们执行上层 DTMDTM代理发来的原语,代理发来的原语,实现图中的接口实现图中的接口 11 ,原语有,原语有 ::

local begin,lcal commit,local abort,local createlocal begin,lcal commit,local abort,local create (2)(2) 中间层:为分布式事务管理层。这是一组能互相交中间层:为分布式事务管理层。这是一组能互相交换报文的本地换报文的本地 DTMDTM代理组成:它们作为一个整体实现代理组成:它们作为一个整体实现图中的接口图中的接口 22 ,即本地,即本地 DTMDTM整体与顶层总代理的接口,整体与顶层总代理的接口,原语有:原语有:

begin tansaction,commit,abort,createbegin tansaction,commit,abort,create (3)(3)顶层:为全局事务层,它由总代理和其他代理组成。顶层:为全局事务层,它由总代理和其他代理组成。

由于己规定只有总代理才能发出接口由于己规定只有总代理才能发出接口 22 中的原语,因此中的原语,因此只有总代理与中层只有总代理与中层 DTMDTM 有接口关系。有接口关系。

Page 48: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

分布式事务恢复的参考模型分布式事务恢复的参考模型

Page 49: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

4.2.6 4.2.6 分布式事务的执行与恢复举例分布式事务的执行与恢复举例

Page 50: 第四章 分布式数据库中的事务管理和恢复 小组成员 : 王波 翟晓玲 翟冰冰

图中图中 (1)(2)(1)(2) 表示当总代理发出表示当总代理发出 begin transactionbegin transaction命令,各命令,各 DTMDTM向各有关站点的向各有关站点的 LTMLTM 发出发出 local_begilocal_beginn命令,收到命令的命令,收到命令的 LTMLTM 把信息记入日志,并将代理把信息记入日志,并将代理转变为子事务转变为子事务 ((激活激活 )) 。。 (3)(4)(5)(6)(3)(4)(5)(6)创建创建 ((激活激活 )) 新代新代理:先由总代理发出理:先由总代理发出 create agent,create agent,源站点源站点 DTMDTM送信送信息给相应站点上的息给相应站点上的 DTMDTM ,收到命令站点的,收到命令站点的 DTMDTM向它向它的的 LTMLTM 发出发出 local_creat_agent,local_creat_agent, 该该 LTMLTM 将信息记入将信息记入日志,并激活代理变为子事务执行之。日志,并激活代理变为子事务执行之。

如果事务撤消:先由代理发出如果事务撤消:先由代理发出 abortabort命令,各命令,各 DTDTMM向相应的向相应的 LTMLTM 发出发出 local_abortlocal_abort命令,各命令,各 LTMLTM记记日志.分别恢复被执行过的活动,使相应子事务均被撤日志.分别恢复被执行过的活动,使相应子事务均被撤销。从而获得全局事务的撤消效果。销。从而获得全局事务的撤消效果。

如果事务提交:当总代理发出提交命令,提交是一如果事务提交:当总代理发出提交命令,提交是一复杂过程,主要的困难来源于下述事实:即分布式事务复杂过程,主要的困难来源于下述事实:即分布式事务的正确提交要求它的全部子事务甚至在故障情况下也能的正确提交要求它的全部子事务甚至在故障情况下也能本地提交。如果有一个或一个以上的子事务不能提交,本地提交。如果有一个或一个以上的子事务不能提交,就不能提交整个分布式事务。为实现这个原语,保证分就不能提交整个分布式事务。为实现这个原语,保证分布式事务的原子性,通常采用两阶段提交协议布式事务的原子性,通常采用两阶段提交协议 ((简称简称 2P2Pc)c)来处理。来处理。