InnoDB 多版本并发控制(MVCC)通过记录版本和事务可见性规则,为部分读取提供一致性视图,并支持事务回滚。
版本与可见性
InnoDB 在记录中维护事务相关信息,并通过 undo 记录恢复旧版本。一致性读取按事务及隔离级别判断哪些版本可见,避免把尚未提交的修改直接当作正常查询结果。
与锁的关系
MVCC 不表示读写完全不需要锁。锁定读取、更新和不同隔离级别有各自规则,长事务还可能使旧版本不能及时清理。
讨论机制时应区分普通一致性读取与 SELECT ... FOR UPDATE 等锁定读取,说明 MySQL 版本和隔离级别,不能把某一种读取行为推广到所有 SQL。