贝利信息

什么是不可重复读_mysql并发问题说明

日期:2026-01-21 00:00 / 作者:P粉602998670
不可重复读是指同一事务内多次读取同一行数据结果不一致,因其他事务修改并提交了该数据;MySQL通过REPEATABLE READ隔离级别配合MVCC快照读可避免,而READ COMMITTED每次读取新快照导致不可重复读。

不可重复读是指在一个事务内,对同一行数据进行多次读取时,得到的结果不一致的现象。根本原因是:其他事务在该事务执行期间修改并提交了这行数据,导致后续读取“看到”了已提交的变更。

不可重复读发生的典型场景

以银行账户余额查询为例:

和脏读的关键区别

不可重复读读到的是已提交的数据,而脏读读到的是未提交、可能被回滚的数据

MySQL中如何避免不可重复读

MySQL默认隔离级别 REPEATABLE READ(可重复读) 就是专门解决这个问题的:

为什么READ COMMITTED级别无法避免

在READ COMMITTED(读已提交)隔离级别下: