问题描述:在多线程并发访问 AT 模式的分布式事务时,有可能出现脏写问题。当事务 1 因为某些原因要恢复快照时,另一个线程的事务 2 白更新了一次数据,出现了脏写问题。

  • 解决思路:由TC记录当前正在操作某项数据的业务,该事务持有全局锁。拿不到锁的数据回滚,避免重复写问题。
  • 如果出现分别拿到DB锁和全局锁,造成死锁的问题。一般全局锁等待时间大大小于数据库锁等待时间,可以解决。
  • 相比于XA模式,TC模式全局锁由TC记录seata管理的操作,XA模式是数据库锁。因此AT模式应该比XA模式效率要好很多。
  • 在上述阶段,如果出现非seata管理业务恰好同时修改数据,此时还是会造成脏读问题。但是这种概率是非常小的,因为业务大多数时候是成功的,少数才会回滚。设计系统的时候也需要尽量避免不一样的事物去操作同一字段。如果出现,需要报警,并进行人工干预。

seata的AT模式中,数据脏读的问题相关推荐

  1. 实战~阿里神器 Seata 实现 TCC模式 解决分布式事务,真香

    今天这篇文章介绍一下Seata如何实现TCC事务模式,文章目录如下: 什么是TCC模式? TCC(Try Confirm Cancel)方案是一种应用层面侵入业务的两阶段提交.是目前最火的一种柔性事务 ...

  2. 实战!阿里神器 Seata 实现 TCC模式 解决分布式事务,真香!

    ‍ 今天这篇文章介绍一下Seata如何实现TCC事务模式,文章目录如下: 目录   什么是TCC模式? TCC(Try Confirm Cancel)方案是一种应用层面侵入业务的两阶段提交.是目前最火 ...

  3. 提交模式窗口后,刷新父窗口数据+获取frameset中各模块中数据

    转自:http://www.iteye.com/topic/724864 一.提交模式窗口后,刷新父窗口数据 有些时间,按需求设计,一个窗口中,点击按扭,弹出模式窗口,在模式窗口中,添加完数据后(提交 ...

  4. 阿里中间件seata源码剖析六:TCC模式中2阶段提交实现

    目录 TM通知TC事务状态 TC通知RM分支事务提交 RM处理TC提交事务请求 总结 上篇文章中,我们以TCC模式的demo为例,讲解了seata中全局事务的开启.在这个demo中,TM作为一个全局事 ...

  5. C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器、实机可用),截图好方便。...

    原文:C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器.实机可用),截图好方便. 一般我们在开发Windows Phone App时,会使用模拟器或是实体的手机开发,在Vi ...

  6. ajax请求在ie和360兼容模式浏览器中数据不能正常返回

    ajax get请求在ie和360兼容模式浏览器中数据不能正常返回,但debugger后数据在ie和360兼容模式浏览器可以正常返回的. 在网上查了一下资料. 以下是资料内容: 在使用jQuery的A ...

  7. 分布式事务 -- seata框架AT模式实现原理

    Seata AT 模式 上一节中我们提到AT模式是基于XA事务模型演变过来的,所以他的整体机制也是一个改进版本的两阶段提交协议. 第一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和链 ...

  8. xa 全局锁_分布式事务如何实现?深入解读 Seata 的 XA 模式

    原标题:分布式事务如何实现?深入解读 Seata 的 XA 模式 作者简介:煊檍,GitHub ID:sharajava,阿里巴巴中件间 GTS 研发团队负责人,SEATA 开源项目发起人,曾在 Or ...

  9. mysql 中的脏读与幻读_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

最新文章

  1. python做bi系统_如何使用Python创建可视化对象
  2. 【网络安全】红蓝攻防:shellcode的分析
  3. 历史和现代的碰撞和思考
  4. mysql MHA高可用架构安装
  5. 请详细描述一下线程从创建到死亡的几种状态都有哪些?
  6. QDoc创建帮助项目文件
  7. JavaScript面向对象——深入理解默认的继承方式原型链
  8. python装饰器的顺序_python中多个装饰器的执行顺序详解
  9. 查看Oracle有哪些表或者视图
  10. 16 BP报错-尚未在外部定义科目组 的编码范围
  11. 第一天 学习前的准备
  12. ajax弹出提示框,Ajax环境下弹出提示框
  13. [读书笔记] 有效竞品分析
  14. BootStrap3 排版
  15. python代码范文_如何给你的Python代码“减负”,这里有一份指南请查收
  16. 首届·技术播客月开播在即
  17. Anaconda+PyCharm+PyTorch+Gym深度强化学习环境搭建 送新手直接送进炼丹炉
  18. 花了三个月终于把所有的Python库全部整理了!祝你早日拿到高薪!
  19. 黑苹果OC配置工具:OpenCore Configurator for Mac(2.48.0.0中文)
  20. 关于瑞萨RL78系列单片机在线升级

热门文章

  1. mac pro M1(ARM)安装:elasticsearch、kibana、logstash ELK(二)
  2. python-pygame小游戏之球球大作战
  3. 简易的安卓天气app(一)——解析Json数据、数据类封装
  4. 2019-408-T45(5)题解
  5. 第二部分 实体、属性和关系
  6. java for each 空的_使用foreach需要判空。
  7. 大学生毕业设计免费项目合集(1000+)无论是Java、C语言、VB、ASP通通都有
  8. 我的世界JAVA版有没有混凝土_我的世界1.12混凝土详解 混凝土合成教程
  9. 系统之家装机大师一键重装Win11系统图文教程
  10. php图片方向,PHP图片处理之图片旋转和图片翻转实例