Appearance
AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。
TIP
AT模式会直接提交SQL,而不是等待所有SQL执行完毕后再提交SQL;RM会形成快照,失败了直接恢复,如果成功则删除快照(异步)即可。XA模式是强一致,AT模式则是最终一致。
使用方式
yaml
# application.yml
seata:
data-source-proxy-mode: AT
在方法上添加注解:@GlobalTransactional
java
@GlobalTransactional
AT模式的脏写问题
事务1设置money=90,之前的值是100,最后执行失败回滚成100,在执行事务1的中间,事务2执行money=80,回滚成100把80的修改语句覆盖了。
Seata引入全局锁机制,在一个事务执行时,防止另一个事务执行修改操作。