MVCC
Each row keeps versions; readers don't block writers.
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?