Skip to content

Commit

Permalink
feat: update articles
Browse files Browse the repository at this point in the history
  • Loading branch information
wx-chevalier committed Jul 16, 2024
1 parent 4cd16c2 commit eaa9639
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
> [原文地址](https://cloud.tencent.com/developer/article/2048786),这篇文章讨论了分布式事务中的 AT 模式(Automatic > Transaction)及其可能出现的脏写问题,以及如何解决这些问题。
>
> 以下是文章的主要内容概述:
>
> 1. **AT 模式原理**
> - AT 模式是一种分阶段提交的事务模型,与 XA 模型相比,它解决了资源锁定周期过长的问题。
> - 在 AT 模式下,事务执行完 SQL 后直接提交,同时 RM(资源管理器)记录更新前后的数据快照到`undo_log`中。
> - 阶段一包括注册分支事务、记录 undo-log、执行业务 SQL 并提交、报告事务状态。
> - 阶段二如果是提交,RM 只需删除 undo-log;如果是回滚,则根据 undo-log 恢复数据。
> 2. **AT 模式的脏写问题**
> - 脏写问题发生在并发事务中,一个事务读取了另一个事务未提交的数据,并基于此进行操作,导致数据不一致。
> - 文章通过一个具体案例说明了脏写问题的发生过程。
> 3. **AT 模式的写隔离机制**
> - 引入全局锁来解决脏写问题,全局锁由 TC(事务协调器)记录,确保同一行数据在同一时间只被一个事务操作。
> - 如果两个事务都被 Seata 管理,它们会通过全局锁来避免脏写。
> - 如果只有一个事务被 Seata 管理,另一个非 Seata 管理的事务可能会引起脏写问题。
> 4. **两种事务管理情况下的讨论**
> - 如果两个事务都被 Seata 管理,通过全局锁和重试机制可以避免死锁和脏写。
> - 如果只有一个事务被 Seata 管理,Seata 会记录两份快照(修改前后),在回滚时进行比对,如果发现不一致,则释放全局锁并记录异常。
> 5. **结论**
> - AT 模式通过全局锁和快照机制解决了脏写问题,保证了数据的一致性。
> - 与 XA 模式相比,AT 模式在某些情况下提供了更好的性能和灵活性。
>
> 文章还提到了 Seata 框架,它是一个开源的分布式事务解决方案,支持 AT 模式。文章最后提到了作者参与腾讯云自媒体同步曝光计划,并说明了原始发表时间。
# 分布式事务 AT 模式的脏写问题
Empty file.

0 comments on commit eaa9639

Please sign in to comment.