分布式数据库中的事务管理和恢复课件

上传人:94****0 文档编号:241286958 上传时间:2024-06-15 格式:PPT 页数:51 大小:642.35KB
返回 下载 相关 举报
分布式数据库中的事务管理和恢复课件_第1页
第1页 / 共51页
分布式数据库中的事务管理和恢复课件_第2页
第2页 / 共51页
分布式数据库中的事务管理和恢复课件_第3页
第3页 / 共51页
点击查看更多>>
资源描述
4.1 分布式事务概述 4.2 分布式事务的执行与恢复 4.3 两阶段提交协议 4.4 分布式数据库中的数据更新 4.5 分布式事务增强数据库一致性 4.6 本章小结 4.1 分布式事务概述14.1 分布式事务概述分布式事务概述n n4.1.1 分布式事务定义和特性n n4.1.2 分布式事务的结构和事务状态n n4.1.3 分布式事务管理的问题和目标4.1 分布式事务概述24.1.1 分布式事务定义和特性 1.分布式事务的定义 事务事务是为了实现特定的业务功能,而访问是为了实现特定的业务功能,而访问数据库的一个最小的逻辑工作单位,它是一个操作数据库的一个最小的逻辑工作单位,它是一个操作序列。序列。分布式事务分布式事务在分布式系统中,任何一个应用在分布式系统中,任何一个应用的请求最终都将转化成对分布在网络中相应站点上的请求最终都将转化成对分布在网络中相应站点上数据库存取操作的序列,因此分布式数据库系统中数据库存取操作的序列,因此分布式数据库系统中的事务是一个分布式操作的序列,因被操作的数据的事务是一个分布式操作的序列,因被操作的数据分布在不同的站点上,所以称为分布式事务。分布在不同的站点上,所以称为分布式事务。4.1.1 分布式事务定义和特性3集中式事务与分布式事务的比较:n n继承外部特性n n扩充执行方式不同,ACID特性复杂n n恢复集中式事务与分布式事务的比较:4 在分布式数据库系统中,一个分布式事务即在分布式数据库系统中,一个分布式事务即全局事务,通常由一个主(父)事务和在不同全局事务,通常由一个主(父)事务和在不同站点上执行的子事务(局部事务)组成。站点上执行的子事务(局部事务)组成。一般的,主事务负责事务的开始,提交和异一般的,主事务负责事务的开始,提交和异常中止。常中止。各个子事务完成对相应站点上数据库的访问各个子事务完成对相应站点上数据库的访问操作。操作。全局事务全局事务一个要求访问或更新多个站点一个要求访问或更新多个站点上数据的事务。上数据的事务。局部事务局部事务一个仅仅访问或更新一个站点一个仅仅访问或更新一个站点上数据的事务。上数据的事务。在分布式数据库系统中,一个分布式事务即52.2.分布式事务的特性分布式事务的特性分布式数据库系统中的事务也应具有事务的分布式数据库系统中的事务也应具有事务的ACIDACID四个特性。即:四个特性。即:原子性(原子性(atomicityatomicity)指事务执行时的不可分割性。这个指事务执行时的不可分割性。这个特性确保了每个事务要么全部发生,要么全部不发生。如果发特性确保了每个事务要么全部发生,要么全部不发生。如果发生,就是不可分割的瞬间的操作。当一个事务处在处理过程中生,就是不可分割的瞬间的操作。当一个事务处在处理过程中时,其他进程(无论是否与事务有关)都不能看到任何中间状时,其他进程(无论是否与事务有关)都不能看到任何中间状态。态。一致性(一致性(consistencyconsistency)指事务的正确性,或者说一个分指事务的正确性,或者说一个分布式事务是一个使分布式数据库从一个一致状态转变为另一个布式事务是一个使分布式数据库从一个一致状态转变为另一个状态的正确程序。例如在一个银行系统中,最关键的不变性是状态的正确程序。例如在一个银行系统中,最关键的不变性是资金守恒规则。在任何内部转帐之后,银行的资金账目应与转资金守恒规则。在任何内部转帐之后,银行的资金账目应与转帐前保持一致,但是在事务执行的短暂时刻内,这种不变性会帐前保持一致,但是在事务执行的短暂时刻内,这种不变性会受到损害。然后,事务结束之后,这种损害就没有了。如果若受到损害。然后,事务结束之后,这种损害就没有了。如果若干个事务并发执行的结果与按希望的顺序串行执行的结果时等干个事务并发执行的结果与按希望的顺序串行执行的结果时等价的,称该若干个事务的并发执行是可串行的,且其结果是正价的,称该若干个事务的并发执行是可串行的,且其结果是正确的。因此,一致性特征也用可串行性(确的。因此,一致性特征也用可串行性(serializabilityserializability)特征表)特征表示,此时,事务具有示,此时,事务具有ASIDASID特性。特性。2.分布式事务的特性6 隔离性(隔离性(isolatyisolaty)指在一个正在执行的事务在其提交之前,指在一个正在执行的事务在其提交之前,决不允许把它对共享的数据所作改变的结果提供给其他事务使决不允许把它对共享的数据所作改变的结果提供给其他事务使用。这就是说,事务的执行似乎与其他事务相隔离,即事务的用。这就是说,事务的执行似乎与其他事务相隔离,即事务的执行不应受到其他并发事务执行的干扰。保持事务的隔离性是执行不应受到其他并发事务执行的干扰。保持事务的隔离性是有许多原因的,保证维护事务的交互一致性是原因之一。有许多原因的,保证维护事务的交互一致性是原因之一。耐久性(耐久性(durabilitydurability)指一旦某个事务被提交了,则无论系统指一旦某个事务被提交了,则无论系统发生任何故障,都不会丢失该事务的执行结果。这就是说,已发生任何故障,都不会丢失该事务的执行结果。这就是说,已提交事务对数据库的改变在数据库中应该是持续存在的,这些提交事务对数据库的改变在数据库中应该是持续存在的,这些改变不会因为故障而发生丢失。改变不会因为故障而发生丢失。分布式数据库中的事务管理和恢复课件7例如:例如:某银行的存款系统,账号某银行的存款系统,账号001001的存款余额为的存款余额为0 0元。分元。分布式事务布式事务T T由两个子事务由两个子事务T1T1和和T2T2组成。站点组成。站点i i上的事上的事务务T1T1在在001001账号中存入账号中存入10001000元。如果在事务元。如果在事务T1T1还未还未提交之前,站点提交之前,站点j j上的事务上的事务T2T2读取此读取此10001000元,并从元,并从001001账号中取走账号中取走10001000元,事务元,事务T2T2提交,此时现金提交,此时现金10001000元就交给事务元就交给事务T2T2的用户。假定此时因某种原因,的用户。假定此时因某种原因,使事务使事务T1T1的存款操作无效,即事务的存款操作无效,即事务T1T1撤销。事务撤销。事务T1T1的撤销要求事务的撤销要求事务T2T2也撤销,因为事务也撤销,因为事务T2T2的操作是建的操作是建立在事务立在事务T1T1操作的基础上的。但是此时要撤销事务操作的基础上的。但是此时要撤销事务T2T2的操作是不可能的了,因为事务的操作是不可能的了,因为事务T2T2已经提交,其已经提交,其产生的结果是无法由系统来撤销的。产生的结果是无法由系统来撤销的。分布式数据库中的事务管理和恢复课件8 由于分布式数据库的分布特性,使得分布由于分布式数据库的分布特性,使得分布式事务还具有自己独有的特性:在分布式事务式事务还具有自己独有的特性:在分布式事务中,除需要考虑访问数据库的存取操作序列外中,除需要考虑访问数据库的存取操作序列外,还必须考虑大量的数据传送,通信原语和控,还必须考虑大量的数据传送,通信原语和控制报文等,这些都是分布式事务所特有的性质。制报文等,这些都是分布式事务所特有的性质。分布式数据库中的事务管理和恢复课件94.1.2 分布式事务的结构和事务状态分布式事务的结构和事务状态4.1.2 分布式事务的结构和事务状态10 应用应用1.1.分布式事务的结构 分布式事务分布式事务分布式事务分布式事务分布式事务分布式事务子子事事务务子子事事务务子子事事务务子子事事务务子子事事务务子子事事务务 应用分布式事务的结构分布式事务分布式事务分布式事务子子子子11分布式事务的一般结构为:分布式事务的一般结构为:Begin Transaction Begin Transaction 原语:开始一个事务原语:开始一个事务 T1 T1 T2 T2 :子事务或操作序列子事务或操作序列 :Tn Tn Commit Commit 原语:事务成功完成的结束原语:事务成功完成的结束 RollBack RollBack 或或AbortAbort原语:事务失败的结束原语:事务失败的结束 分布式事务的一般结构为:122.2.分布式数据库中进程的协作分布式数据库中进程的协作(1 1)两个概念)两个概念进程进程:是一个具有一定独立功能的程序关于某个数据集合的一次运是一个具有一定独立功能的程序关于某个数据集合的一次运 行活动。行活动。它有两个侧面它有两个侧面:进程说明进程说明 :定义进程的行为模式:定义进程的行为模式,包括数据和对数据的一组包括数据和对数据的一组 操作操作,执行这组操作执行这组操作,完成某一功能。完成某一功能。进程执行:按进程说明中所定义的模式来启动这个进程,执进程执行:按进程说明中所定义的模式来启动这个进程,执 行其中的那组操作。行其中的那组操作。事务代理(事务代理(AgentAgent):在分布式数据库系统中,为了完成在不同站):在分布式数据库系统中,为了完成在不同站 点上的相应功能,分布式应用必须在这些站点中执行若干进点上的相应功能,分布式应用必须在这些站点中执行若干进 程,这些进程就称为该应用在那个站点上的程,这些进程就称为该应用在那个站点上的“事务代理事务代理”。所。所 以,一个事务代理是一个本地进程,它代表应用来执行某些以,一个事务代理是一个本地进程,它代表应用来执行某些动作。启动一个事务造成在某一站点开始执行那个事务代动作。启动一个事务造成在某一站点开始执行那个事务代 理。这个事务代理的执行又可能引起在另一个站点开始执行理。这个事务代理的执行又可能引起在另一个站点开始执行另一个事务。另一个事务。2.分布式数据库中进程的协作13(2 2)进程的协作)进程的协作 为了协调地执行分布式应用的全局操作,分驻于不同为了协调地执行分布式应用的全局操作,分驻于不同站点的诸事务代理必须进行协调。为考虑事务的特性,站点的诸事务代理必须进行协调。为考虑事务的特性,把各站点上的诸代理组建成协作进程来完成一个全局应把各站点上的诸代理组建成协作进程来完成一个全局应用,并作如下规定:用,并作如下规定:1 1)每一应用均有一个负责启动整个事务的总代理或)每一应用均有一个负责启动整个事务的总代理或称根代理,建立总代理的站点称为源站点;称根代理,建立总代理的站点称为源站点;2 2)只有总代理才能发出全局有效的事务开始,提交)只有总代理才能发出全局有效的事务开始,提交和撤销原语;和撤销原语;3 3)只有总代理才能请求建立新的事务代理;)只有总代理才能请求建立新的事务代理;4 4)各站点上的子事务都执行成功,总代理才能决)各站点上的子事务都执行成功,总代理才能决定提交该事务,否则总代理将决定撤销该事务。定提交该事务,否则总代理将决定撤销该事务。分布式数据库中的事务管理和恢复课件14FUND_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 ACCOUNT Select AMOUNT into$FROM_AMOUNT from ACCOUNT where ACCOUNT_NUMBER=$FROM_ACC;where ACCOUNT_NUMBER=$FROM_ACC;if$FROM_AMOUNT-$AMOUNT0 then abort if$FROM_AMOUNT-$AMOUNT0 then abort else begin else begin Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT where ACCOUNT_NUMBER=$FROM_ACC;where ACCOUNT_NUMBER=$FROM_ACC;Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT where ACCOUNT_NUMBER=$TO_ACC;where ACCOUNT_NUMBER=$TO_ACC;Commit Commit end end 图图4.14.1全局级的全局级的FUND_TRANSFERFUND_TRANSFER事务事务分布式数据库中的事务管理和恢复课件15ROOT_AGENT AGENT:ROOT_AGENT AGENT:输入:汇出金额和转出输入:汇出金额和转出/转入账号转入账号事务开始:检查转出账号中事务开始:检查转出账号中是否又足够的转出资金是否又足够的转出资金更新转出账号存款余额更新转出账号存款余额创建代理创建代理Agent向代理送信息:转入帐号,金额向代理送信息:转入帐号,金额等待来自等待来自Agent的消息的消息成功成功提交事务:成功结束提交事务:成功结束否否撤销事务:失败结束撤销事务:失败结束接收来自根代理的消息接收来自根代理的消息更新转入账号存款余额更新转入账号存款余额发送执行消息给根代理发送执行消息给根代理(成功或失败)(成功或失败)ROOT_AGENT 16ROOT-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 ACCOUNT Select AMOUNT into$FROM_AMOUNT from ACCOUNT where ACCOUNT_NUMBER=$FROM_ACCOUNT;where ACCOUNT_NUMBER=$FROM_ACCOUNT;if$FROM_AMOUNT-$AMOUNT0 then abort if$FROM_AMOUNT-$AMOUNT0 then abort else begin else 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);Commit Commit end endAGENT;AGENT;Receive from ROOT_AGENT($AMOUNT,$TO_ACC);Receive from ROOT_AGENT($AMOUNT,$TO_ACC);Update ACCOUNT set AMOUNT=AMOUNT+$AMOUNT Update 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事务事务ROOT-AGENT;174.1.3 4.1.3 分布式事务管理的问题和目标分布式事务管理的问题和目标1.1.分布式事务管理的问题分布式事务管理的问题 (1 1)处理数据项的多个副本)处理数据项的多个副本 分布式事务管理负责保持同一数据的多个副本间的分布式事务管理负责保持同一数据的多个副本间的一致性。一致性。(2 2)单个站点的故障)单个站点的故障 当故障站点得到恢复时,当故障站点得到恢复时,DDBMSDDBMS协同该故障站点上协同该故障站点上的的DBMSDBMS,必须在该站点与系统重新连接时,使它的,必须在该站点与系统重新连接时,使它的局部数据与其他站点同步。局部数据与其他站点同步。(3 3)通信网络的故障)通信网络的故障 系统必须有能力处理一个或多个连接站点的通信网系统必须有能力处理一个或多个连接站点的通信网络故障。这个问题的一个极端情况是发生网络分割。络故障。这个问题的一个极端情况是发生网络分割。(4 4)分布式提交)分布式提交 如果在提交一个分布式事务过程中至少有一个站点如果在提交一个分布式事务过程中至少有一个站点发生故障的话,那么这个分布式事务的提交将会产生发生故障的话,那么这个分布式事务的提交将会产生问题。问题。4.1.3 分布式事务管理的问题和目标182.分布式事务管理的目标分布式事务管理的目标 事务管理的任务就是负责当若干个事务并发执行和事事务管理的任务就是负责当若干个事务并发执行和事务执行发生错误时,使数据库仍保持一致状态。务执行发生错误时,使数据库仍保持一致状态。分布式数据库中的事务管理和恢复课件19例如:例如:某公司在银行中有某公司在银行中有A,BA,B两个账号,现在公司想从账号两个账号,现在公司想从账号A A中中取出一万元,存入账号取出一万元,存入账号B B。那么就可以定义一个事务,。那么就可以定义一个事务,该事务包括两个操作,第一个操作是从账号该事务包括两个操作,第一个操作是从账号A A中减去一中减去一万元,第二个操作是向账号万元,第二个操作是向账号B B中加入一万元。在事务开中加入一万元。在事务开始时,数据库是处于一个一致性状态。在事务执行时,始时,数据库是处于一个一致性状态。在事务执行时,如果只做第一个操作则用户逻辑上就会发生错误,少了如果只做第一个操作则用户逻辑上就会发生错误,少了一万元,这时数据库就处于非一致性状态。当我们接着一万元,这时数据库就处于非一致性状态。当我们接着做第二个操作,且成功提交后,数据库又处在了一致性做第二个操作,且成功提交后,数据库又处在了一致性的状态。的状态。分布式数据库中的事务管理和恢复课件20 事务管理所追求的理想目标是高执行效率,高并行性事务管理所追求的理想目标是高执行效率,高并行性和高可靠性。这三大理想目标往往不能兼得,因为他们之和高可靠性。这三大理想目标往往不能兼得,因为他们之间密切相关,而又矛盾。可靠性措施会使效率下降,而事间密切相关,而又矛盾。可靠性措施会使效率下降,而事务运行效率不仅取决于采用的策略,还与下列因素有关:务运行效率不仅取决于采用的策略,还与下列因素有关:(1 1)CPUCPU和主存利用率和主存利用率 (2 2)控制报文)控制报文 (3 3)相应时间)相应时间 (4 4)可用性)可用性由此可见事务管理的目标是:由此可见事务管理的目标是:(1 1)维护分布式事务的原子性,一致性,耐久性和隔)维护分布式事务的原子性,一致性,耐久性和隔离性。离性。(2 2)获得最小的主存和)获得最小的主存和CPUCPU开销,降低控制报文的传开销,降低控制报文的传输个数和加快分布式事务的响应速度;输个数和加快分布式事务的响应速度;(3 3)获得最大限度的系统可靠性和可用性。)获得最大限度的系统可靠性和可用性。214.2 分布式事务的执行与恢复分布式事务的执行与恢复4.2 分布式事务的执行与恢复224.2.1 4.2.1 分布式事务管理的抽象模型分布式事务管理的抽象模型 在分布式数据库系统中,事务管理功能分成两在分布式数据库系统中,事务管理功能分成两个层次。个层次。在每个站点上,又类似于集中式数据库系统中在每个站点上,又类似于集中式数据库系统中的局部事务管理器(的局部事务管理器(LTMLTM)进行局部事务的管理,)进行局部事务的管理,负责本站点事务的执行,完成对本站点数据库数据负责本站点事务的执行,完成对本站点数据库数据的访问;的访问;对整个分布式数据库系统,由驻留在各个站点对整个分布式数据库系统,由驻留在各个站点上的分布式事务管理器(上的分布式事务管理器(DTMDTM)共同协作,实现)共同协作,实现对分布式事务的协调和管理。对分布式事务的协调和管理。分布式数据库中的事务管理和恢复课件23图图图图4.54.5分布式事务管理的抽象模型分布式事务管理的抽象模型分布式事务管理的抽象模型分布式事务管理的抽象模型 站 点 1 站 点 3 站 点 2本地事务管理器本地事务管理器LTM1分布式事务管理器分布式事务管理器DTM1分布式事务管理器分布式事务管理器DTM1本地事务管理器本地事务管理器LTM2分布式事务管理器分布式事务管理器DTM1本地事务管理器本地事务管理器LTM3图4.5分布式事务管理的抽象模型 站 站 站本地事务管理器分24 局部事务管理器LTM的结构和功能在许多方面与集中式系统类似,主要包括:(1)保证本地事务的ACID特性;(2)维护一个用于恢复的日志,代替DTM把用于分布式事务执行和恢复的信息记入日志。(3)参与适当的并发控制模式,以协调在该站点上执行的事务的并发执行。接收并听从本站点上DTM代理发来的LOG原语,记入日志并执行之。LOG原语包括:local begin_transaction,local commit local abort 25分布式事务管理器分布式事务管理器DTMDTM的功能包括:的功能包括:(1 1)保证分布式事务的)保证分布式事务的ACIDACID特性,尤其是执行分布特性,尤其是执行分布式事务的原子性式事务的原子性,使每个站点的子事务都成功执行,或都使每个站点的子事务都成功执行,或都不执行。这是通过向各个站点发不执行。这是通过向各个站点发begin_transaction,commitbegin_transaction,commit或或abort,createabort,create原语来实现的。原语来实现的。(2 2)负责协调由该站点发出的所有分布式事务的执)负责协调由该站点发出的所有分布式事务的执行。包括:启动分布式事务的执行;将分布式事务分解为行。包括:启动分布式事务的执行;将分布式事务分解为一些子事务,并将这些子事务分派到恰当的站点上去执一些子事务,并将这些子事务分派到恰当的站点上去执行;决定分布式事务的终止,即决定在该分布式事务中所行;决定分布式事务的终止,即决定在该分布式事务中所包含的所有站点上的子事务都撤销或都提交。包含的所有站点上的子事务都撤销或都提交。分布式数据库中的事务管理和恢复课件26(3 3)支持分布式事务的执行位置透明性,这也是分)支持分布式事务的执行位置透明性,这也是分布式事务管理的最基本要求。分布式事务管理器根布式事务管理的最基本要求。分布式事务管理器根据事务内部的逻辑划分为若干子事务,按某种要求据事务内部的逻辑划分为若干子事务,按某种要求分布到相应站点上执行,最后由源发站点提供事务分布到相应站点上执行,最后由源发站点提供事务的最终结果。它实现了对网络上各站点的各个子事的最终结果。它实现了对网络上各站点的各个子事务的监督与管理,完成对整个分布式事务执行过程务的监督与管理,完成对整个分布式事务执行过程的调度和管理,从而保证分布式数据库系统的高效的调度和管理,从而保证分布式数据库系统的高效率。率。(3)支持分布式事务的执行位置透明性,这也是分274.2.2 4.2.2 分布式事务执行的控制模型分布式事务执行的控制模型 分布式事务的控制模型是指协调分布式事务中分布式事务的控制模型是指协调分布式事务中各成员各成员DBMSDBMS执行其子事务的通用方法;执行其子事务的通用方法;控制分布式事务执行的控制模型有控制分布式事务执行的控制模型有:1 1)主从模型)主从模型 2 2)三角模型)三角模型 3 3)层次控制模型)层次控制模型分布式数据库中的事务管理和恢复课件28图4.6 分布式执行的主从控制模型图4.6 分布式执行的主从控制模型29图4.7 分布式执行的三角控制模型图4.7 分布式执行的三角控制模型30图4.8 分布式执行的层次控制模型图4.8 分布式执行的层次控制模型314.2.3分布式数据库系统中的故障4.2.3分布式数据库系统中的故障324.2.44.2.4事务故障恢复的基本概念事务故障恢复的基本概念 研究数据库系统中故障的恢复,主要是指如何恢复因研究数据库系统中故障的恢复,主要是指如何恢复因故障而破坏的数据库,使数据库恢复到一个正确,一致的故障而破坏的数据库,使数据库恢复到一个正确,一致的状态。恢复的基本原理是数据冗余,即利用冗余存储在别状态。恢复的基本原理是数据冗余,即利用冗余存储在别处的信息和数据,部分或全部重建数据库。处的信息和数据,部分或全部重建数据库。1.1.事务故障和事务恢复事务故障和事务恢复 当发生事务故障时,保证事务原子性的措施称为事务当发生事务故障时,保证事务原子性的措施称为事务故障恢复,简称为事务恢复。故障恢复,简称为事务恢复。事务恢复主要时依靠日志来实现的。事务恢复主要时依靠日志来实现的。2.2.事务状态及状态转移事务状态及状态转移 为保证可恢复性,系统需要保存事务的起始,终止,为保证可恢复性,系统需要保存事务的起始,终止,提交或撤销的时间轨迹,事务恢复管理器还对下列操作进提交或撤销的时间轨迹,事务恢复管理器还对下列操作进行跟踪记录。行跟踪记录。分布式数据库中的事务管理和恢复课件331)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):表示事务没有成功结束:表示事务没有成功结束,因此必须因此必须撤撤销事务对数据库所作的任何改变或影响。销事务对数据库所作的任何改变或影响。分布式数据库中的事务管理和恢复课件34 read/write read/write Begin end Begin end transaction transaction commit transaction transaction commit abort abort abort abort activePartiallycommittedcommittedfailedterminatedactivePartiallycommittedfailed353.3.事务的提交点事务的提交点 当事务当事务T T所有的站点数据库存取操作都已成功执行,所有的站点数据库存取操作都已成功执行,并且所有操作对数据库的影响都已记录在日志中时,该事并且所有操作对数据库的影响都已记录在日志中时,该事务务T T就到达提交点就到达提交点(committed point).(committed point).提交点后事务就成为提交点后事务就成为已提交的事务,并且假定其结果已永久记录在数据库中已提交的事务,并且假定其结果已永久记录在数据库中(事务的永久性事务的永久性)。然后事务在日志中写入提交记录。然后事务在日志中写入提交记录commit,T.commit,T.在系统发生故障时,需要扫描日志,检查那在系统发生故障时,需要扫描日志,检查那些已在日志中写入些已在日志中写入start_transaction,T,start_transaction,T,但没有写入但没有写入commit,Tcommit,T的所有事务的所有事务T T;恢复时必须回滚这些事务以取;恢复时必须回滚这些事务以取消他们对数据库的影响。此外,还必须对日志中记录的已消他们对数据库的影响。此外,还必须对日志中记录的已提交事务的所有写操作进行恢复,这样他们对数据库的作提交事务的所有写操作进行恢复,这样他们对数据库的作用才可根据这些记录重做。用才可根据这些记录重做。需要注意的是,必须将日志文件保存在磁盘上。在事需要注意的是,必须将日志文件保存在磁盘上。在事务到达提交点以前,还未写到磁盘的日志的任何部分,必务到达提交点以前,还未写到磁盘的日志的任何部分,必须被写入磁盘,这称为事务提交前强制写须被写入磁盘,这称为事务提交前强制写(force writing)(force writing)日日志。志。3.事务的提交点364.4.日志,档案库和检查点日志,档案库和检查点(1)(1)日志日志 为了能够从故障状态中恢复由影响的事务,系统维为了能够从故障状态中恢复由影响的事务,系统维护一个日志护一个日志(log)(log)来保存所有影响数据库项的值的事务操来保存所有影响数据库项的值的事务操作作的信息,这些信息可以用于故障时的恢复。日志保存在磁的信息,这些信息可以用于故障时的恢复。日志保存在磁盘上,这样除了磁盘和灾难性故障外,它不会受到任何影盘上,这样除了磁盘和灾难性故障外,它不会受到任何影响。另外,日志会被定期备份到归档存储设备(例如磁响。另外,日志会被定期备份到归档存储设备(例如磁带)中,以预防磁盘和灾难性故障。下面列出的是日志的带)中,以预防磁盘和灾难性故障。下面列出的是日志的条目类型(称为日志记录)和每个类型设计的相关动作。条目类型(称为日志记录)和每个类型设计的相关动作。在条目中。在条目中。T T表示唯一事务标识表示唯一事务标识(transaction_id)(transaction_id)用于标用于标识识每个事务,通常由系统自动生成:每个事务,通常由系统自动生成:4.日志,档案库和检查点371)1)start_transaction,T:start_transaction,T:表示事务表示事务T T开始执行。开始执行。2)2)write_item,T,X,write_item,T,X,旧值旧值,新值新值:表示事务表示事务T T已将已将数据项数据项X X的值从旧值改为新值。的值从旧值改为新值。3)3)read_item,T,X:read_item,T,X:表示事务表示事务T T已读取数据项已读取数据项X X的的值。值。4)4)commit,T:commit,T:表示事务表示事务T T已成功完成,其结果已已成功完成,其结果已被提交被提交(永久记录永久记录)给数据库。给数据库。5)5)abort,T:abort,T:表示事务表示事务T T已被撤销。已被撤销。6)6)Log:Log:记录长度及用于恢复过程的辅助信息,如指记录长度及用于恢复过程的辅助信息,如指向本事务前一日志记录的指针,检查点记录等向本事务前一日志记录的指针,检查点记录等。start_transaction,T:表示事务T开始执38(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).(2)档案库39(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中的地址记中的地址记入入”重启动文件重启动文件”中。中。(3)检查点40 在写检查点时,为了保证检查点之前所作的在写检查点时,为了保证检查点之前所作的工工作都是有效的,防止故障引起缓冲区信息的丢失,作都是有效的,防止故障引起缓冲区信息的丢失,因此在写检查点时要将缓冲区中的所有内容写入到因此在写检查点时要将缓冲区中的所有内容写入到永久存储设备中,而且采取永久存储设备中,而且采取“先写日志先写日志”的原则。的原则。使用检查点方法可以改善恢复效率。当事务使用检查点方法可以改善恢复效率。当事务T T在在一个检查点之前提交,一个检查点之前提交,T T对数据库所做的修改一定都对数据库所做的修改一定都已写入数据库,写入时间是在这个检查点建立之前已写入数据库,写入时间是在这个检查点建立之前或在这个检查点建立之时。这样在进行恢复处理或在这个检查点建立之时。这样在进行恢复处理时,没有必要对事务时,没有必要对事务T T执行执行REDOREDO操作。操作。在写检查点时,为了保证检查点之前所作的工41系统出现故障时恢复子系统将根据事务的不同状态采取不系统出现故障时恢复子系统将根据事务的不同状态采取不同的恢复策略,如图:同的恢复策略,如图:Tc(Tc(检查点检查点)Tf)Tf(系统故障)(系统故障)时间时间 t1 t1 不要不要REDOREDO t2 REDO t2 REDO t3 t3 撤销撤销 t4 REDOt4 REDO t5 t5 撤销撤销 T1T1:在检查点之前提交。:在检查点之前提交。:在检查点之前提交。:在检查点之前提交。T2T2:在检查点之前开始执行,在检查点之后故障点之前提交。:在检查点之前开始执行,在检查点之后故障点之前提交。:在检查点之前开始执行,在检查点之后故障点之前提交。:在检查点之前开始执行,在检查点之后故障点之前提交。T3T3:在检查点之前开始执行,在故障点时还未完成。:在检查点之前开始执行,在故障点时还未完成。:在检查点之前开始执行,在故障点时还未完成。:在检查点之前开始执行,在故障点时还未完成。T4T4:在检查点之后开始执行,在故障点之前提交。:在检查点之后开始执行,在故障点之前提交。:在检查点之后开始执行,在故障点之前提交。:在检查点之后开始执行,在故障点之前提交。T5T5:在检查点之后开始执行,在故障点时还未完成。:在检查点之后开始执行,在故障点时还未完成。:在检查点之后开始执行,在故障点时还未完成。:在检查点之后开始执行,在故障点时还未完成。系统出现故障时恢复子系统将根据事务的不同状态采取不424.2.5 4.2.5 事务故障的恢复事务故障的恢复1.1.事务恢复的原则事务恢复的原则(1)(1)孤立和逐步退出事务的原则孤立和逐步退出事务的原则 对于不影响其他事务的可排除性局部故障例如事务操作的删对于不影响其他事务的可排除性局部故障例如事务操作的删除、超时、违反完整性规则、资源、限制、死锁等,应令某个事务除、超时、违反完整性规则、资源、限制、死锁等,应令某个事务孤立地和逐步地退出将其所做过的修改复原,即做孤立地和逐步地退出将其所做过的修改复原,即做UND0UND0。(2)(2)成功结束事务原则成功结束事务原则 成功结束事务所做过的修改应超越各种故障而存在成功结束事务所做过的修改应超越各种故障而存在,也就是重做也就是重做(REDO)(REDO)它所做过的所有修改数据库的操作。它所做过的所有修改数据库的操作。(3)(3)夭折事务的原则夭折事务的原则 若发生了非局部性的不可排除的故障,例如系统崩溃,则撤消若发生了非局部性的不可排除的故障,例如系统崩溃,则撤消全部事务,恢复到初态:这有两种做法,一种是利用数据库的备份全部事务,恢复到初态:这有两种做法,一种是利用数据库的备份实现;另一种是按逆向顺序操作,复原其启动以来所做过的一切修实现;另一种是按逆向顺序操作,复原其启动以来所做过的一切修改。改。分布式数据库中的事务管理和恢复课件432.2.本地事务的恢复本地事务的恢复 本地事务的恢复过程类似于集中式数据库系统中事务本地事务的恢复过程类似于集中式数据库系统中事务的恢复。当故障排除后,由局部事务管理器的恢复子系统的恢复。当故障排除后,由局部事务管理器的恢复子系统执行事务恢复,过程如图执行事务恢复,过程如图4.114.11所示。所示。2.本地事务的恢复44(1)(1)从从“重启动文件重启动文件”中读出最近的中读出最近的Checkpoint RecordCheckpoint Record的的地地址,定出址,定出Checkpoint RecordCheckpoint Record在在Log Data SetLog Data Set中的地址;中的地址;(2)(2)创建创建REDOREDO表,初态为空表,初态为空:创建创建UNDOUNDO表表,将将Checkpoint Checkpoint 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记录。记录。分布式数据库中的事务管理和恢复课件453.3.分布式事务的恢复分布式事务的恢复 在分布式事务恢复中,本地事务的恢复类同于集中式事在分布式事务恢复中,本地事务的恢复类同于集中式事务的恢复,由本地事务管理器具体执行;而整个分布式务的恢复,由本地事务管理器具体执行;而整个分布式事务的恢复由分布式事务管理器与本地事务管理器协同事务的恢复由分布式事务管理器与本地事务管理器协同完成。完成。(1)(1)底层:为本地事务管理器层底层:为本地事务管理器层.这些这些LTMLTM之间不需要进之间不需要进行通信联系,它们执行上层行通信联系,它们执行上层DTMDTM代理发来的原语,实现代理发来的原语,实现图中的接口图中的接口1 1,原语有,原语有:local begin,lcal commit,local abort,local create local begin,lcal commit,local abort,local create (2)(2)中间层:为分布式事务管理层。这是一组能互相交换中间层:为分布式事务管理层。这是一组能互相交换报文的本地报文的本地DTMDTM代理组成:它们作为一个整体实现图中代理组成:它们作为一个整体实现图中的接口的接口2 2,即本地,即本地DTMDTM整体与顶层总代理的接口,原语整体与顶层总代理的接口,原语有:有:begin tansaction,commit,abort,create begin tansaction,commit,abort,create (3)(3)顶层:为全局事务层,它由总代理和其他代理组成。顶层:为全局事务层,它由总代理和其他代理组成。由于己规定只有总代理才能发出接口由于己规定只有总代理才能发出接口2 2中的原语,因此中的原语,因此只有总代理与中层只有总代理与中层DTMDTM有接口关系。有接口关系。3.分布式事务的恢复46分布式事务恢复的参考模型分布式事务恢复的参考模型474.2.6 分布式事务的执行与恢复举例4.2.6 分布式事务的执行与恢复举例48精品课件精品课件!精品课件!49精品课件精品课件!精品课件!50 图中图中(1)(2)(1)(2)表示当总代理发出表示当总代理发出begin transactionbegin transaction命令,命令,各各DTMDTM向各有关站点的向各有关站点的LTMLTM发出发出local_beginlocal_begin命令,收到命令,收到命令的命令的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命令,各命令,各DTMDTM向向相应的相应的LTMLTM发出发出local_abortlocal_abort命令,各命令,各LTMLTM记日志分别记日志分别恢复被执行过的活动,使相应子事务均被撤销。从而获恢复被执行过的活动,使相应子事务均被撤销。从而获得全局事务的撤消效果。得全局事务的撤消效果。如果事务提交:当总代理发出提交命令,提交是一如果事务提交:当总代理发出提交命令,提交是一复杂过程,主要的困难来源于下述事实:即分布式事务复杂过程,主要的困难来源于下述事实:即分布式事务的正确提交要求它的全部子事务甚至在故障情况下也能的正确提交要求它的全部子事务甚至在故障情况下也能本地提交。如果有一个或一个以上的子事务不能提交,本地提交。如果有一个或一个以上的子事务不能提交,就不能提交整个分布式事务。为实现这个原语,保证分就不能提交整个分布式事务。为实现这个原语,保证分布式事务的原子性,通常采用两阶段提交协议布式事务的原子性,通常采用两阶段提交协议(简称简称2Pc)2Pc)来处理。来处理。图中(1)(2)表示当总代理发出be51
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!