Software Engineering Radio - the podcast for professional software developers

Episode 496: Bruce Momjian on Multi-Version Concurrency Control in Postgres (MVCC)

01.25.2022 - By [email protected]Play

Download our free app to listen on your phone

Download on the App StoreGet it on Google Play

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.

More episodes from Software Engineering Radio - the podcast for professional software developers