ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 分布事物的提交(转)

分布事物的提交(转)

原创 Linux操作系统 作者:andyxu 时间:2009-06-30 11:00:24 0 删除 编辑

什么是分布事物?

在一个事物中,包含对多个数据库数据进行处理的DML语句。

 

在分布事物中,为了保证全局数据的一致性,采用两阶段提交。如下图:

 

global coordinator                          Commit point site

commit_point_strength = 5                   commit_point_strength = 10

 

  Remote

  

Local

                                                                                                                                               

 

 

 

Insert into table @ remote

Insert into table                                            

Commit; 

   

 

两阶段提交保证分布事物全部提交或全部回滚

 

系统参数commit_point_strength 定义了分布数据库的提交顺序,commit_point_strength值较高的数据库为commit point site,在分布事物中最先提交,分布事物的状态信息也存在该数据库中。一般将关键的数据库作为commit point site  本地数据库为Global Coordinator

 

分布事物的两阶段提交分三个过程:

 

1.  准备阶段(PREPARE PHASE

·本地数据库Global Coordinator向其它数据库发出COMMIT通知

·比较所有数据库的SCN号,将最高的SCN号作为分布事物的全局SCN

·所有数据库写在线日志

·对分布事物修改的表加分布锁,防止被读写

·各数据库向Global Coordinator发出已经准备好的通知

所有参与分布事物的数据库必须经过上述准备,才能进入下一阶段。

 

2.  提交阶段(COMMIT PHASE

·本地数据库Global Coordinator通知commit point site首先提交。commit point site提交后,释放其占有的资源,通知Global Coordinator完成提交

·本地数据库Global Coordinator通知其它数据库提交

·提交节点在日志中追加一条信息,表示分布事物已经完成提交,并通知Global Coordinator。此时所有数据库的数据保持了一致性。

 

3.  注销阶段(FORGET PHASE

·本地数据库Global Coordinator通知commit point site所有数据库已经完成提交

·commit point site清除分布事物的记录和状态信息,并通知Global Coordinator

·Global Coordinator清除本地分布事物的记录和状态信息

此时分布事物的两阶段提交全部完成。

 

如果两阶段提交完成之前,数据库或网络出现异常,应用就会报错,分布事物处于IN_DOUBT状态。一旦数据库或网络恢复正常,系统(RECO PROCESS)会自动处理IN_DOUBT状态的分布事物。有些情况需要管理员手工处理IN_DOUBT状态的分布事物:

·IN_DOUBT状态的分布事物,将关键表锁住,造成应用不能正常工作

·分布数据库需要重建

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/110321/viewspace-607868/,如需转载,请注明出处,否则将追究法律责任。

上一篇: crontab命令简介
请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    167
  • 访问量
    291949