学习自用,此文章仅用于记录课题知识。
AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。
AT模式(基于支持本地ACID事务的数据库) :
- 无需侵入业务代码,基于数据层
- 两阶段提交协议的变种
- 性能较好,但存在脏回滚的风险(回滚日志的生成和清理)
- TC (Transaction Coordinator) - 事务协调者: 维护全局和分支事务的状态,协调全局事务提交或回滚。
- TM (Transaction Manager) - 事务管理器: 定义全局事务的范围、开始全局事务、提交或回滚全局事务。
- RM (Resource Manager) - 资源管理器: 管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
AT模式分为两个阶段: 第一个阶段:
TM向TC申请全局事务,创建成功后,TM调用分支分支事务(RM)。RM注册分支事务到TC。RM会执行SQL语句并提交事务,在提交事务前和提交后都会把数据记录到快照表undolog中。最终,RM会根据SQL语句的执行状态通知TC事务执行结果。
第二个阶段:
所有的RM都执行之后,TM通知TC提交或回滚操作,TC检查分支事务的状态。
如果全都成功,TC会通知各个事务进行提交操作,此时只需要删除undolog表就行。
如果有事务失败了,TC会通知各各分支事务进行回滚。此时,事务执行成功的RM从undolog表中提取保存的数据,用来恢复数据,并在最终删除undolog表。执行失败的RM由undolog表中没有保存的数据,所以不需要额外操作。