XA&AT的区别
XA第一阶段的工作是:RM注册分支事务到TC,执行分支业务SQL但不提交,报告执行状态到Tc;
第二阶段的工作是:TC检测各分支事务事务执行状态;RM接收TC指令,提交或回滚事务;
(如果都成功就会通知所有的rm提交事务)(如果都失败就会通知所有的rm回滚事务);
AT第一阶段:rm注册分支事务,记录undo-log,执行业务SQL并提交,报告事务的状态;
第二阶段:提交rm的工作,删除undo-log;或者回滚rm的工作,根据undo-log恢复数据到更新前;
AT与XA模式的最大区别是:
XA模式一阶段所有的分支执行SQL;第二阶段提交或回退分支事务;
依赖数据库机制实现回滚;具有强一致性,性能相对差;
AT模式一阶段所有的分支执行并提交SQL(同时seata会备份旧的数据);第二阶段如果第一阶段有失败的事务则回滚,如果都成功则删除undo-log记录;
利用数据快照实现数据回滚,性能好,最终一致;