1、提到XA事务,我们也必须提到普通事务,普通事务和XA事务,还是有很大差别的.
普通事务:在开始事务时,每个事务都会创建一个事务文件,当commit时,先把修改过的数据块,写到事务文件中,然后再一次性的写入数据库文件中。这样在commit时挂出错时,当服务器重启,会重新把事务文件中修改过的数据块写到数据块中,然后删除事务文件。
2、XA事务也叫分布式事务
其实XA事务是基于二阶段提交实现的。XA事务中需要有一个事务协调器来保证所有的事务参与者完成了准备工作(第一阶段)。如果协调器收到所有参与者都准备好的消息,就会通知所有事务可以提交了(第二阶段)。
下面两个图片来自:http://www.infoq.com/cn/articles/xa-transactions-handle
出错回滚: