Databases

MVCC

Multi-version concurrency control

Readers see a consistent snapshot without blocking writers, because an update creates a new row version rather than overwriting the old one.

The cost of never blocking readers is that old row versions accumulate and must be reclaimed. Almost everything that surprises people about PostgreSQL - vacuum, bloat, transaction ID wraparound, why an UPDATE can be slower than an INSERT - follows from this single decision.

Explained in depth

Implemented by

Learn it in context

Related concepts