当前位置:   article > 正文

Seata 中XA,AT模式浅析_xa at

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采用了全局锁,全局锁中维护了 一张表  表中有三个字段 (被修改的表ÿ

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/858495
推荐阅读
相关标签
  

闽ICP备14008679号