MVCC 多版本并发控制

通过保存数据的历史版本让读操作不阻塞写、写不阻塞读;不同隔离级别对应不同快照规则,长事务与热点更新会造成版本堆积,需要清理机制。

核心机制每个事务看到某一时间点的可见版本;旧版本由撤销日志或旧行保留
典型实现PostgreSQL 的行版本与 VACUUM;InnoDB 的 undo log 与 purge
运维关注长事务、快照过老、清理滞后导致空间膨胀
MVCC 不解决所有并发异常:写偏斜等需要可串行化隔离或显式加锁。

易错点

  • 长事务持有老快照,清理无法推进导致表膨胀
  • 把 MVCC 当作万能解,忽略写冲突仍需锁或重试

数据来源与参考

  • PostgreSQL 文档:Concurrency Control(MVCC)
  • MySQL 8.0 Reference Manual:InnoDB Multi-Versioning
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌