什么是 MVCC?

发布于

一、定义

MVCC(Multi-Version Concurrency Control,多版本并发控制),通过维护数据的多个历史版本,实现读写不阻塞,提高并发性能。

二、实现要素

  1. 隐藏字段:每行有 trx_id(创建该版本的事务 ID)和 roll_pointer(指向 undo log 中的上一版本)。
  2. undo log:存储旧版本数据,形成版本链。
  3. Read View:事务启动时生成的快照,记录活跃事务 ID 列表,用于判断版本可见性。

三、可见性规则

  • 版本的 trx_id < Read View 中最小活跃 ID → 可见。
  • 版本的 trx_id > Read View 中最大活跃 ID → 不可见。
  • 在活跃列表中 → 不可见,沿版本链找上一版本。

四、效果

  • RC 级别:每次 select 都生成新 Read View。
  • RR 级别:只在第一次 select 生成 Read View,后续复用。