两阶段提交(two phase commit)

两阶段提交在使用单数据库时没有意义。事务中间件通过XA接口规范使用两阶段提交来完成一个全局事务。
第一阶段,事务中间件请求所有相关数据库准备提交各自事务分支,预提交。当某一数据库收到预提叫请求后,如果允许,则把提交的操作记录下来,同时返回给事务中间件一个同意提交的应答,此时数据库将不能再在该事务分支中加入操作,但事务并没有真正提交。如果无法提交,则回滚所有操作,释放共享资源锁并返回事务中间件一个失败应答。
第二阶段,事务中间件审查所有数据库返回的提交应答,如果所有应答都允许,则事务中间件要求所有数据库做正式提交,此时全局事务才被提交。如果任一预提交被拒绝,事务中间件会要求所有数据库回滚,同时该全局事务被回滚。

以上来自互联网