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

MySQL不同连接的读一致性:REPEATABLE READ下新连接能否看到刚提交的变更

MySQL RR隔离级别下已提交变更对新连接的可见性说明

结论

在MySQL InnoDB引擎默认的REPEATABLE READ(可重复读)隔离级别下,已完成提交的变更,对后续新开启的连接完全可见,不存在不可见的情况。

原理说明

InnoDB的可重复读隔离级别通过一致性读视图(Read View)实现快照读,核心规则如下:

  • 同一个事务内的多次快照读,会复用事务第一次执行快照读时生成的Read View,因此可以保证同一个事务内多次读取数据一致,不会出现不可重复读问题。
  • 新开启的连接,在首次执行快照读时会生成全新的Read View,视图中会记录生成瞬间所有未提交的活跃事务ID,只要事务提交时间早于视图生成时间,就不会出现在活跃列表中,对应变更对当前读完全可见。

你描述的场景是「第一个连接先完成提交,再开启新连接」,新连接生成Read View时,第一个连接的事务已经处于已提交状态,因此变更一定会被新连接读取到。

常见认知误区

部分开发者误以为RR级别下所有情况都看不到其他事务的提交,这种情况仅发生在同一个事务已经生成过Read View之后,其他事务才提交变更的场景,和你描述的「先提交、再开新连接」的先后顺序完全不同,因此不适用。

验证示例

你可以通过以下步骤自行验证:

  1. 连接1执行操作:
CREATE TABLE IF NOT EXISTS test(id INT);
BEGIN;
INSERT INTO test VALUES(1);
COMMIT;
-- 关闭连接1
  1. 立刻开启新的连接2执行查询:
SELECT * FROM test;

查询结果一定会返回id=1的记录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:06:02