- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章-分布式事务处理
第九章 分布式事务处理 袁帅 何杰涛 第九章 分布式事务处理 9.1 概述 9.2 简单分布式事务和嵌套事务 9.3 原子提交协议 9.4 分布式事务的并发控制 9.5 分布式事务的死锁 9.6 带复制数据的事务 9.7 小结 9.1 概述 事务 用于访问和修改各种数据项的一个程序单位。 数据库管理系统中的事务是访问数据库的一个程序的执行。 分布式系统中,事务是指一组客户请求的执行。从客户角度看,事务是组成一个步骤的一组操作,它将服务器的数据从一个一致性状态转换到另一个一致性状态。 9.1 概述 分布式事务 活动涉及多个服务器的事务。 9.2 简单分布式事务和嵌套事务 简单分布式事务:又称为平面分布式事务,一个客户可请求多台服务器,但每接收客户请求的服务器并不调用其他服务器的操作。 9.2 简单分布式事务和嵌套事务 嵌套事务:一个服务器的一个操作可能触发另一个服务器的某个操作,通常后者可能又进一步请求操作,依次类推。同层次的子事务可以并发执行。 9.2 简单分布式事务和嵌套事务 9.2 简单分布式事务和嵌套事务 事务的第一个服务器成为事务的协调者,负责终止或提交事务。 管理分布式事务访问的对象的每个服务器都是该事务的参与者,每个事务参与者负责跟踪所有参与分布式事务的可恢复对象。 事务执行过程中,协调者在列表中记录所有对参与者的引用,每一个参与者也记录一个对协调者的引用。 join(Trans, Server-id of coordinator) 事务标识符TID分为创建该事务的服务器标识符(IP)和对该服务器来说是唯一的数字两部分。 9.2 简单分布式事务和嵌套事务 银行事务涉及服务器Branch X、Y、Z上的账户A、B、C、D,客户事务T从A转账$4到C,从B转账$3到D。 T=openTransaction A.withdraw(4); C.deposit(4); B.withdraw(3); D.deposit(3); closeTransaction 9.2 简单分布式事务和嵌套事务 9.3 原子提交协议 事务的原子性:要求当一个分布式事务结束时,它的操作要么全部执行,要么全部没执行。 原子提交协议:以原子方式完成事务的方式。 9.3 原子提交协议 两阶段提交协议:准备和执行两个阶段。 9.3 原子提交协议 阶段1(表决阶段): (1)协调者向事务的每个参与者发送一个CanCommit?请求; (2)当参与者受到CanCommit?请求,将其表决(Yes或No)应答传递给协调者。若表决为No,参与者立即中止。 阶段2 (根据表决结果完成) (3)协调者收集表决(包括自己的); (a)若无故障且所有表决均为Yes,则协调者决定提交事务且向每个参与者发送一个DoCommit请求; (b)否则,协调者决定中止事务,且向所有表决为Yes的参与者发送AbortTransaction请求。 (4)表决为Yes的参与者等待协调者的DoCommit或AbortTransaction请求。当参与者收到某一消息,按其执行。若是提交,发一个HaveCommitted给协调者作为确认。 9.3 原子提交协议 9.3 原子提交协议 两阶段提交协议中的性能 9.4 分布式事务的并发控制 每个服务器要管理很多对象,它必须保证在并发事务访问这些对象时,这些对象仍保持一致性。因此,每个服务器需要对自己的对象应用并发控制机制。 分布式事务所有服务器共同保证事务以串行等价方式执行。这就意味着,如果事务T对某一服务器对象冲突访问在事务U之前,那么在所有服务器上对对象的冲突操作,事务T都在U之前。 9.4 分布式事务的并发控制 锁机制 在一个分布式事务中,每个服务器都为其数据项保留锁。本地锁管理者可以决定是授予锁还是让请求的事务等待。当它知道事务已在参加该事务的所有服务器上提交或者中止之前不能释放锁。 由于服务器彼此独立地设置它们的锁,有可能不同服务器将不同的次序加于事务上,就可能出现分布式死锁的情况。 9.4 分布式事务的并发控制 9.4 分布式事务的并发控制 分布式事务中的时间戳定序并发控制 在分布式事务中,每个服务器可以分配全局唯一的时戳。事务第一次访问的服务器分配一个全局唯一的时戳给客户,该时戳被传给事务中执行了操作的每个服务器。 例如,在一个服务器上由事务U访问的数据项在由事务T访问该数据项后提交,则当U和T在另外的服务器上访问相同数据项时,它们也必须按照相同的次序提交。 为实现在所有服务器相
文档评论(0)