You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL READ_COMMITTED隔离级别下增量更新的执行策略与结果咨询

问题解答

最终执行结果与采用策略

最终count字段的值为3,MySQL采用的是第二种无竞态条件的策略。
UPDATE语句属于MySQL的当前读操作,执行时会先为命中的行加排他行锁,锁获取成功后才会读取行的当前值、做增量计算、写入新值,锁会一直持有到事务提交才释放。整个过程不会出现两个事务同时读取到相同初始值的情况,也就不会产生第一种策略里的更新覆盖问题。

注意:第一种存在竞态的场景仅会出现在「先在业务代码中单独SELECT读取count值、计算后再执行UPDATE」的写法中,和本问题中单条UPDATE内置增量计算的逻辑完全不同。

READ_COMMITTED隔离级别的相关保证

  • 杜绝脏读:事务所有读取到的数据都是其他事务已提交的修改结果,不会读取到其他事务未提交的中间状态值。
  • 加锁读的最新值保证:UPDATE、SELECT ... FOR UPDATE这类加锁的当前读操作,每次都会读取行的最新已提交版本,保证修改是基于最新的有效值进行。
  • 行锁隔离:加锁后的行在锁释放前,其他事务无法对其进行修改或加锁,避免了并行修改同一条数据的冲突问题。

内容的提问来源于stack exchange,提问作者Jon Bates

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:36:04