Storage & Databases also: Multi-Version Concurrency Control

MVCC

Each row keeps versions; readers don't block writers.


In plain terms

Postgres, MySQL InnoDB, Oracle, CockroachDB. Vacuum/cleanup reclaims old versions.

Origin

Phil Bernstein and Nathan Goodman, "Concurrency Control in Distributed Database Systems," 1981, formalised MVCC in the database literature. Production roots: InterBase (1985), then Oracle, then Postgres (which got proper MVCC in 2000).

Where it shows up in production
  • PostgreSQL Every row carries xmin/xmax; readers see a snapshot. Vacuum is the GC for old versions.
  • MySQL InnoDB Undo log + row versioning; old versions kept in the undo segment, not the table.
  • CockroachDB & Spanner Distributed MVCC with HLC (hybrid logical clock) timestamps as version IDs.
Sources & further reading
Found this useful?