Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

两阶段提交

Posted on 2011-12-21 14:30 Prayer 阅读(1928) 评论(0)  编辑 收藏 引用 所属分类: 数据库,SQLDB2
 一阶段提交(1PC One Phase Commit)
   一 阶段提交就是事务处理器向数据库服务器发出提交请求,然后等待数据库服务器的回应,收到回应后完成事务的提交,或者服务器返回提交失败的结果就回撤事务。 危险期从发出请求开始,到收到回应结束,这段时间中数据库完成数据的修改、日志记录等处理,处理越复杂,危险期就越长。
 
   两阶段提交(2PC Two Phase Commit)

    两阶段提交把事务提交分成两个阶段:

  • 第一阶段,事务处理器向数据库服务器发出"准备提交"请求,数据库收到请求后执行相同的数据修改和日志记录等处理,不同的是处理完成后只是把事务的状态改成"可以提交",然后把结果返回给事务处理器。
  • 事务处理器收到回应后进入第二阶段,如果在第一阶段内的危险期中发生了故障,事务处理器收不到回应,则认为事务失败,回撤事务。数据库服务器收不到第二阶段的确认提交请求,把"可以提交"的事务回撤.
  • 两阶段的第二阶段中事务处理器向数据库服务器发出"确认提交"请求,数据库服务器把事务的"可以提交"状态改为"提交完成"状态,然后返回应答。

   从严格意义上说,两阶段提交并没有完全解决网络通讯危险期的问题,但因为第二阶段的处理很简单,只是修改了事务的状态,与第一阶段相比其处理时间极短,所以危险期极短,发生事务提交故障的可能性几乎不存在。 

 

所谓两阶段提交, 即Two Phase Commit (2PC), 是分布式事务采用的一种处理

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理