因为事务需要实现ACID,即原子性、一致性、隔离性、持久性,所以需要采用一定的机制来保证,通常采用的是分阶段提交的方式。
XA:XA协议,规定事务管理器和资源管理器接口,采用二阶段提交协议。
一阶段提交协议
一阶段提交协议相对简单,如下图:
当然,前提是开启了事务,然后在应用程序发出提交/回滚请求后,数据库执行操作,而后将成功/失败返回给应用程序,程序继续执行。
一阶段提交协议相对简单,简单带来的优点就是,它不用再与其他的对象交互,节省了判断步骤和时间,所以在性能上是在阶段提交协议中对好的。
二阶段提交协议
一阶段提交协议有其优点,但缺点也很明显:
- 数据库确认执行事务的时间较长,出问题的可能性就随之增大。