分布式事务管理与恢复

分布式事务管理与恢复

ID:27233844

大小:243.01 KB

页数:58页

时间:2018-12-01

分布式事务管理与恢复_第1页
分布式事务管理与恢复_第2页
分布式事务管理与恢复_第3页
分布式事务管理与恢复_第4页
分布式事务管理与恢复_第5页
资源描述:

《分布式事务管理与恢复》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、分布式事务管理与恢复事务概念事务是访问或更新各种数据项的程序执行单元.事务必须保证数据库的一致性事务执行期间数据库可能不一致事务概念-续当事务提交(commit)时数据库必须是一致的DatabaseConsistentConsistent事务概念-续两个问题:故障各种软硬件故障并发执行多个事务同时执行事务性质ACID原子性(Atomicity)事务的操作要么全部执行,要么全部不执行一致性(Consistency)并发执行的多个事务,其操作的结果应与以某种顺序串行执行这几个事务所得的结果相同.持久性(Durabil

2、ity)当事务提交后,其操作的结果将永久化,而与提交后发生的故障无关事务性质-续独立性(Isolation)虽然可以有多个事务同时执行,但是单个事务的执行不应该感知其他事务的存在,因此事务执行的中间结果应该对其他并发事务隐藏一对事务Ti和Tj的执行,看起来好像是或者Ti在Ti执行结束之后才开始执行,或者Tj,是在Ti执行结束之后才开始执行举例从账号A向账号B转账$50:1.read(A)2.A:=A–503.write(A)4.read(B)5.B:=B+506.write(B)举例-续一致性要求事务执行后A和B

3、账号的总金额不变原子性要求如果事务在第3步和第6步之间故障,系统应该保证事务对数据库的修改没有产生,否则将导致不一致性举例-续持久性要求一旦用户通知说事务已经完成(即$50转账成功),那么由该事务对数据库的修改就必须保证是永久的,即使是发生故障也如此举例-续独立性要求如果在第3步和第6步之间,允许其他事务访问被修改的数据库的中间结果,那么它将见到一个不一致的数据库(也就是说,A+B的和少于它的正确值)当然事务的串行执行将不会出现这种情况,但是数据库中事务并行执行的优点就损失了事务状态活动从事务开始执行的初始状态始

4、,事务执行中保持该状态部分提交事务的最后一个语句执行后进入该状态失败一旦发现事务不能正常执行时进入该状态夭折当事务被回滚后,数据库恢复到事务开始执行前的状态。事务夭折后有两种选择重启动仅当没有内部逻辑错误时KILL提交当事务成功执行后.事务状态-续abortedcommittedfailedPartiallycommittedactive分布式事务分布式事务是由若干个不同Site上的子事务组成的事务事务的ACID性质此时事务的原子性、一致性、持久性、独立性等都要将每个Site上的子事务考虑在内分布式事务结构Beg

5、inTrans....Abort/CommitBeginTransT1[T2[...Tn[Abort/Commit进程协作进程系统中可以并行执行的一段操作序列,分布式事务中的子事务序列是进程方式完成过程不可并行执行的操作序列事务代理(Agent)应用在各个Site上执行的若干进程,称作应用在该Site上的代理。代理可以执行应用程序员写的程序,也可以执行系统的原语函数,不同代理间通过报文实现通讯,根代理(RootAgent)应用启动Site上的代理。根代理所在的Site称作原发Site。一般,根代理负责发系统原语,

6、只有根代理可以请求创建新代理。事务代理转账应用事务在两个账户之间执行“基金汇兑”操作。全局关系Account(Account-number,Amount)假设账户分布在网络的不同站点上。全局级转帐事务FUND_TRANSFER:read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);begin_transaction;selectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhereACCOUNT_NUMBER=$FROM_ACC;if$FROM_AMOUNT-$A

7、MOUNT<0thenabortelsebeginupdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT_NUMBER=$FROM_ACC;updateACCOUNTsetAMOUNT=AMOUNT+$AMOUNTwhereACCOUNT_NUMBER=$TO_ACC;commitend输入:汇出金额和转入/转出帐号事务开始:检查转出帐号中是否有足够的转出资金?更新转出帐号存款余额创建AGENT1向代理1送消息:转入帐号,金额等待来自AGENT1的消息成功?提交事务:成

8、功结束撤消事务:失败结束ROOT_AGENTAGENT接收来自根代理的信息更新转入帐号存款余额发送执行消息给根代理(成功或失败)是否否转账应用处理流程ROOT_AGENT;read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);begin_transaction;selectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。