
TL;DR
PostgreSQL's Multi-Version Concurrency Control (MVCC) design, while criticized for issues like table bloat and write amplification, is a deliberate choice that enables non-blocking reads. Understanding its trade-offs compared to other database engines is crucial for informed decision-making.
✦ Why It Matters
Evaluate your database choice based on MVCC's trade-offs and your application's concurrency needs.
Key Takeaways
How It Works
In PostgreSQL, an UPDATE operation does not modify the existing row but instead creates a new version of the row. This new version is stored in the heap, while the old version remains on disk.
The visibility of these versions is determined at read time, allowing concurrent access but leading to the accumulation of dead tuples that require cleanup by the VACUUM process.
Related