Glossary — in plain language

MVCC (Multi-Version Concurrency Control)

Also called: Multiversion concurrency control


In plain English

Instead of locking a row while someone reads it, PostgreSQL keeps several versions of that row. Readers see the version that existed when their query (or transaction) started, and writers create a new version. The result: readers never block writers and writers never block readers.

Why it matters

MVCC is why PostgreSQL handles many concurrent users smoothly, but it is also why old row versions (dead tuples) pile up and must be cleaned by VACUUM. Understanding it explains bloat, long-running transactions, and why a forgotten open transaction can stop cleanup.

Was this helpful?

← Browse the full glossary