Databases
MVCC
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
Database Engineering
Learning path · beginner
PostgreSQL 19 - what changes and what breaksLearning path · intermediate
PostgreSQL REPACK - reclaiming space without the lockLearning path · intermediate
PostgreSQL 19 replication - WAIT, sequences and subscriptionsLearning path · intermediate
PostgreSQL 19 autovacuum - parallel workers and the scoring systemLearning path · intermediate
PostgreSQL 19 maintenance extensions - pg_visibility, pg_surgery, pg_prewarm, pgrowlocksLearning path · advanced