多版本并发控制(Multi-Version Concurrency Control)
缩写:MVCC
简述
通过保留行的多个版本,使读事务看到某一快照而不阻塞多数写,写也不必阻塞多数读。是现代 OLTP 引擎实现隔离的核心机制之一。
为何出现
纯锁下读写互相阻塞,吞吐差。
使用场景
理解快照读、长查询与 vacuum/purge、回滚段膨胀。
在体系中的位置
与 undo/版本链、可见性判断、垃圾回收协同。
实践与应用
• 避免超长只读事务导致版本无法回收。
• 区分快照读与当前读(如加锁读)。
• 监控死元组/undo 与自动清理。
注意事项
• MVCC 不消除写写冲突。
• 快照过旧可能导致「看不到最新提交」的业务误解。
对比与易混
MVCC vs 纯锁;快照隔离 vs 可串行化。
信号与度量
purge/vacuum 延迟、undo 大小、长事务年龄。
关联术语
• 隔离级别:快照读常见配套
• 锁:与 MVCC 配合或替代的路径
• 事务:版本可见性边界