Seata 中XA,AT模式浅析

XA 模式主要特点:

1.强一致性

2.最早的分布式事务处理方案,因此许多数据库内部支持XA模式,如mysql

3.对数据库锁占用时间较长,性能较低

XA分两阶段提交,第一阶段进行事务注册,将事务注册到TC,然后执行sql语句,第二阶段TC判定有无事务执行出错,如果没错则通知所有事务提交,否则回滚,在第一到第二阶段过程中事务一直占有数据库锁,因此性能低,但所有事务要么一起提交,要么一起回滚,所以能实现强一致性。

AT模式主要特点

1.最终一致性

2.性能较XA高

3.只在第一阶段获取锁,在第一阶段进行提交后释放锁。

AT也分两阶段提交,第一阶段进行事务注册,将事务注册到TC,将当前要操作的数据写入undo log(将原数据写入),然后执行sql语句并提交(在数据库中操作),操作完成后释放数据库锁,第二阶段TC判定有无事务执行出错,如果没错则通知所有事务删除undo log,否则通过undo log回到原来的状态。这个过程中会带来一种问题----脏写,如一个事务(编号1)完成了第一阶段并且提交后,另一个事务(编号2)来操作相同的一条语句,第二阶段有其它事务出错,TC通知补偿时,数据库返回到undo log的状态,那么就会导致编号2的操作无效,并且编号2并不知道自己无效。

为了解决这个问题,senta采用了全局锁,全局锁中维护了 一张表  表中有三个字段 (被修改的表ÿ

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值