Episode 496: Bruce Momjian on Multi-Version Concurrency Control in Postgres (MVCC)
Software Engineering Radio - the podcast for professional software developers - En podcast av se-radio@computer.org
![](https://is1-ssl.mzstatic.com/image/thumb/Podcasts116/v4/cf/da/b9/cfdab986-4a2c-61c4-42a5-ec511eea0b1a/mza_8712856294784819153.png/300x300bb-75.jpg)
Kategorier:
This week, Postgres server developer Bruce Momjian joins host Robert Blumen for a discussion of multi-version concurrency control (MVCC) in the Postgres database. They begin with a discussion of the isolation requirement in database transactions (I in ACID); how isolation can be achieved with locking; limitations of locking; how locking limits concurrency and creates variability in query runtimes; multi-version concurrency control as a means to achieve isolation; how Postgres manages multiple versions of a row; snapshots; copy-on-write and snapshots; visibility; database transaction IDs; how tx ids, snapshots and versions interact; the need for locking when there are multiple writers; how MVCC was added to Postgres; and how to clean up unused space left over from aged-out versions.