分布式数据库中的事务管理和恢复.ppt
《分布式数据库中的事务管理和恢复.ppt》由会员分享,可在线阅读,更多相关《分布式数据库中的事务管理和恢复.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 分布式数据库中的事务管理和恢复分布式数据库中的事务管理和恢复小组成员小组成员:王波王波 翟晓玲翟晓玲 翟冰冰翟冰冰 4.1 分布式事务概述 4.2 分布式事务的执行与恢复 4.3 两阶段提交协议 4.4 分布式数据库中的数据更新 4.5 分布式事务增强数据库一致性 4.6 本章小结4.1 分布式事务概述分布式事务概述n n4.1.1 分布式事务定义和特性n n4.1.2 分布式事务的结构和事务状态n n4.1.3 分布式事务管理的问题和目标4.1.1 分布式事务定义和特性 1.分布式事务的定义 事务事务是为了实现特定的业务功能,而访问是为了实现特定的业务功能,而访问数据库的一个最
2、小的逻辑工作单位,它是一个操作数据库的一个最小的逻辑工作单位,它是一个操作序列。序列。分布式事务分布式事务在分布式系统中,任何一个应在分布式系统中,任何一个应用的请求最终都将转化成对分布在网络中相应站点用的请求最终都将转化成对分布在网络中相应站点上数据库存取操作的序列,因此分布式数据库系统上数据库存取操作的序列,因此分布式数据库系统中的事务是一个分布式操作的序列,因被操作的数中的事务是一个分布式操作的序列,因被操作的数据分布在不同的站点上,所以称为分布式事务。据分布在不同的站点上,所以称为分布式事务。集中式事务与分布式事务的比较:n n继承外部特性n n扩充执行方式不同,ACID特性复杂n n
3、恢复 在分布式数据库系统中,一个分布式事务即在分布式数据库系统中,一个分布式事务即全局事务,通常由一个主(父)事务和在不同全局事务,通常由一个主(父)事务和在不同站点上执行的子事务(局部事务)组成。站点上执行的子事务(局部事务)组成。一般的,主事务负责事务的开始,提交和异一般的,主事务负责事务的开始,提交和异常中止。常中止。各个子事务完成对相应站点上数据库的访问各个子事务完成对相应站点上数据库的访问操作。操作。全局事务全局事务一个要求访问或更新多个站点一个要求访问或更新多个站点上数据的事务。上数据的事务。局部事务局部事务一个仅仅访问或更新一个站点一个仅仅访问或更新一个站点上数据的事务。上数据的
4、事务。2.2.分布式事务的特性分布式事务的特性分布式数据库系统中的事务也应具有事务的分布式数据库系统中的事务也应具有事务的ACIDACID四个特性。即:四个特性。即:原子性(原子性(atomicityatomicity)指事务执行时的不可分割性。这个指事务执行时的不可分割性。这个特性确保了每个事务要么全部发生,要么全部不发生。如果发特性确保了每个事务要么全部发生,要么全部不发生。如果发生,就是不可分割的瞬间的操作。当一个事务处在处理过程中生,就是不可分割的瞬间的操作。当一个事务处在处理过程中时,其他进程(无论是否与事务有关)都不能看到任何中间状时,其他进程(无论是否与事务有关)都不能看到任何中
5、间状态。态。一致性(一致性(consistencyconsistency)指事务的正确性,或者说一个分指事务的正确性,或者说一个分布式事务是一个使分布式数据库从一个一致状态转变为另一个布式事务是一个使分布式数据库从一个一致状态转变为另一个状态的正确程序。例如在一个银行系统中,最关键的不变性是状态的正确程序。例如在一个银行系统中,最关键的不变性是资金守恒规则。在任何内部转帐之后,银行的资金账目应与转资金守恒规则。在任何内部转帐之后,银行的资金账目应与转帐前保持一致,但是在事务执行的短暂时刻内,这种不变性会帐前保持一致,但是在事务执行的短暂时刻内,这种不变性会受到损害。然后,事务结束之后,这种损害
6、就没有了。如果若受到损害。然后,事务结束之后,这种损害就没有了。如果若干个事务并发执行的结果与按希望的顺序串行执行的结果时等干个事务并发执行的结果与按希望的顺序串行执行的结果时等价的,称该若干个事务的并发执行是可串行的,且其结果是正价的,称该若干个事务的并发执行是可串行的,且其结果是正确的。因此,一致性特征也用可串行性(确的。因此,一致性特征也用可串行性(serializabilityserializability)特征表)特征表示,此时,事务具有示,此时,事务具有ASIDASID特性。特性。隔离性(隔离性(isolatyisolaty)指在一个正在执行的事务在其提交之前,指在一个正在执行的事
7、务在其提交之前,决不允许把它对共享的数据所作改变的结果提供给其他事务使决不允许把它对共享的数据所作改变的结果提供给其他事务使用。这就是说,事务的执行似乎与其他事务相隔离,即事务的用。这就是说,事务的执行似乎与其他事务相隔离,即事务的执行不应受到其他并发事务执行的干扰。保持事务的隔离性是执行不应受到其他并发事务执行的干扰。保持事务的隔离性是有许多原因的,保证维护事务的交互一致性是原因之一。有许多原因的,保证维护事务的交互一致性是原因之一。耐久性(耐久性(durabilitydurability)指一旦某个事务被提交了,则无论系统指一旦某个事务被提交了,则无论系统发生任何故障,都不会丢失该事务的执
8、行结果。这就是说,已发生任何故障,都不会丢失该事务的执行结果。这就是说,已提交事务对数据库的改变在数据库中应该是持续存在的,这些提交事务对数据库的改变在数据库中应该是持续存在的,这些改变不会因为故障而发生丢失。改变不会因为故障而发生丢失。例如:例如:某银行的存款系统,账号某银行的存款系统,账号001001的存款余额为的存款余额为0 0元。分元。分布式事务布式事务T T由两个子事务由两个子事务T1T1和和T2T2组成。站点组成。站点i i上的事上的事务务T1T1在在001001账号中存入账号中存入10001000元。如果在事务元。如果在事务T1T1还未提还未提交之前,站点交之前,站点j j上的事
9、务上的事务T2T2读取此读取此10001000元,并从元,并从001001账号中取走账号中取走10001000元,事务元,事务T2T2提交,此时现金提交,此时现金10001000元元就交给事务就交给事务T2T2的用户。假定此时因某种原因,使事的用户。假定此时因某种原因,使事务务T1T1的存款操作无效,即事务的存款操作无效,即事务T1T1撤销。事务撤销。事务T1T1的撤的撤销要求事务销要求事务T2T2也撤销,因为事务也撤销,因为事务T2T2的操作是建立在的操作是建立在事务事务T1T1操作的基础上的。但是此时要撤销事务操作的基础上的。但是此时要撤销事务T2T2的的操作是不可能的了,因为事务操作是不
10、可能的了,因为事务T2T2已经提交,其产生已经提交,其产生的结果是无法由系统来撤销的。的结果是无法由系统来撤销的。由于分布式数据库的分布特性,使得分布由于分布式数据库的分布特性,使得分布式事务还具有自己独有的特性:在分布式事务式事务还具有自己独有的特性:在分布式事务中,除需要考虑访问数据库的存取操作序列外中,除需要考虑访问数据库的存取操作序列外,还必须考虑大量的数据传送,通信原语和控,还必须考虑大量的数据传送,通信原语和控制报文等,这些都是分布式事务所特有的性质。制报文等,这些都是分布式事务所特有的性质。4.1.2 分布式事务的结构和事务状态分布式事务的结构和事务状态 应用应用1.1.分布式事
11、务的结构2.2.分布式事务分布式事务分布式事务分布式事务分布式事务分布式事务子子事事务务子子事事务务子子事事务务子子事事务务子子事事务务子子事事务务分布式事务的一般结构为:分布式事务的一般结构为:Begin Transaction Begin Transaction 原语:开始一个事务原语:开始一个事务 T1 T1 T2 T2 :子事务或操作序列子事务或操作序列 :Tn Tn Commit Commit 原语:事务成功完成的结束原语:事务成功完成的结束 RollBack RollBack 或或AbortAbort原语:事务失败的结束原语:事务失败的结束 2.2.分布式数据库中进程的协作分布式数
12、据库中进程的协作(1 1)两个概念)两个概念进程进程:是一个具有一定独立功能的程序关于某个数据集合的一次运是一个具有一定独立功能的程序关于某个数据集合的一次运 行活动。行活动。它有两个侧面它有两个侧面:进程说明进程说明 :定义进程的行为模式:定义进程的行为模式,包括数据和对数据的一组包括数据和对数据的一组 操作操作,执行这组操作执行这组操作,完成某一功能。完成某一功能。进程执行:按进程说明中所定义的模式来启动这个进程,执进程执行:按进程说明中所定义的模式来启动这个进程,执 行其中的那组操作。行其中的那组操作。事务代理(事务代理(AgentAgent):在分布式数据库系统中,为了完成在不同站):
13、在分布式数据库系统中,为了完成在不同站 点上的相应功能,分布式应用必须在这些站点中执行若干进点上的相应功能,分布式应用必须在这些站点中执行若干进 程,这些进程就称为该应用在那个站点上的程,这些进程就称为该应用在那个站点上的“事务代理事务代理”。所所 以,一个事务代理是一个本地进程,它代表应用来执行某些以,一个事务代理是一个本地进程,它代表应用来执行某些动作。启动一个事务造成在某一站点开始执行那个事务代动作。启动一个事务造成在某一站点开始执行那个事务代 理。这个事务代理的执行又可能引起在另一个站点开始执行理。这个事务代理的执行又可能引起在另一个站点开始执行另一个事务。另一个事务。(2 2)进程的
14、协作)进程的协作 为了协调地执行分布式应用的全局操作,分驻于不为了协调地执行分布式应用的全局操作,分驻于不同站点的诸事务代理必须进行协调。为考虑事务的特性,同站点的诸事务代理必须进行协调。为考虑事务的特性,把各站点上的诸代理组建成协作进程来完成一个全局应把各站点上的诸代理组建成协作进程来完成一个全局应用,并作如下规定:用,并作如下规定:1 1)每一应用均有一个负责启动整个事务的总代理)每一应用均有一个负责启动整个事务的总代理或称根代理,建立总代理的站点称为源站点;或称根代理,建立总代理的站点称为源站点;2 2)只有总代理才能发出全局有效的事务开始,提)只有总代理才能发出全局有效的事务开始,提交
15、和撤销原语;交和撤销原语;3 3)只有总代理才能请求建立新的事务代理;)只有总代理才能请求建立新的事务代理;4 4)各站点上的子事务都执行成功,总代理才能决)各站点上的子事务都执行成功,总代理才能决定提交该事务,否则总代理将决定撤销该事务。定提交该事务,否则总代理将决定撤销该事务。FUND_TRANSFER:FUND_TRANSFER:Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Begin_Transaction;Begin_Transaction;Select AMOUNT
16、 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=AMOU
17、NT-$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事务事务ROOT_AGENT AGENT:RO
18、OT_AGENT AGENT:输入:汇出金额和转出输入:汇出金额和转出/转入账号转入账号事务开始:检查转出账号中事务开始:检查转出账号中是否又足够的转出资金是否又足够的转出资金更新转出账号存款余额更新转出账号存款余额创建代理创建代理Agent向代理送信息:转入帐号,金额向代理送信息:转入帐号,金额等待来自等待来自Agent的消息的消息成功成功提交事务:成功结束提交事务:成功结束否否撤销事务:失败结束撤销事务:失败结束接收来自根代理的消息接收来自根代理的消息更新转入账号存款余额更新转入账号存款余额发送执行消息给根代理发送执行消息给根代理(成功或失败)(成功或失败)ROOT-AGENTROOT-A
19、GENT;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-$AMO
20、UNT0 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 Co
21、mmit 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.
22、34.3两个代理组成的两个代理组成的FUND_TRANSFERFUND_TRANSFER事务事务4.1.3 4.1.3 分布式事务管理的问题和目标分布式事务管理的问题和目标1.1.分布式事务管理的问题分布式事务管理的问题2.2.(1 1)处理数据项的多个副本)处理数据项的多个副本3.3.分布式事务管理负责保持同一数据的多个副本分布式事务管理负责保持同一数据的多个副本间的一致性。间的一致性。4.4.(2 2)单个站点的故障)单个站点的故障5.5.当故障站点得到恢复时,当故障站点得到恢复时,DDBMSDDBMS协同该故障协同该故障站点上的站点上的DBMSDBMS,必须在该站点与系统重新连接时,必须
23、在该站点与系统重新连接时,使它的局部数据与其他站点同步。使它的局部数据与其他站点同步。6.6.(3 3)通信网络的故障)通信网络的故障7.7.系统必须有能力处理一个或多个连接站点的通系统必须有能力处理一个或多个连接站点的通信网络故障。这个问题的一个极端情况是发生网络分信网络故障。这个问题的一个极端情况是发生网络分割。割。8.8.(4 4)分布式提交)分布式提交9.9.如果在提交一个分布式事务过程中至少有一如果在提交一个分布式事务过程中至少有一个站点发生故障的话,那么这个分布式事务的提交将个站点发生故障的话,那么这个分布式事务的提交将会产生问题。会产生问题。2.分布式事务管理的目标分布式事务管理
24、的目标 事务管理的任务就是负责当若干个事务并发执行和事事务管理的任务就是负责当若干个事务并发执行和事务执行发生错误时,使数据库仍保持一致状态。务执行发生错误时,使数据库仍保持一致状态。例如:例如:某公司在银行中有某公司在银行中有A,BA,B两个账号,现在公司想从账号两个账号,现在公司想从账号A A中中取出一万元,存入账号取出一万元,存入账号B B。那么就可以定义一个事务,。那么就可以定义一个事务,该事务包括两个操作,第一个操作是从账号该事务包括两个操作,第一个操作是从账号A A中减去一中减去一万元,第二个操作是向账号万元,第二个操作是向账号B B中加入一万元。在事务开中加入一万元。在事务开始时
25、,数据库是处于一个一致性状态。在事务执行时,始时,数据库是处于一个一致性状态。在事务执行时,如果只做第一个操作则用户逻辑上就会发生错误,少了如果只做第一个操作则用户逻辑上就会发生错误,少了一万元,这时数据库就处于非一致性状态。当我们接着一万元,这时数据库就处于非一致性状态。当我们接着做第二个操作,且成功提交后,数据库又处在了一致性做第二个操作,且成功提交后,数据库又处在了一致性的状态。的状态。事务管理所追求的理想目标是高执行效率,高并行性事务管理所追求的理想目标是高执行效率,高并行性和高可靠性。这三大理想目标往往不能兼得,因为他们之和高可靠性。这三大理想目标往往不能兼得,因为他们之间密切相关,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 数据库 中的 事务管理 恢复
限制150内