Back to Devoured - July 31, 2026
DEVOURED
PostgreSQL's MVCC Is Bad: So Is Everyone Else's

PostgreSQL's MVCC Is Bad: So Is Everyone Else's

DevOps BoringSQL
PostgreSQL's MVCC bloat is a design trade-off that moves costs to the operator, whereas competing designs merely relocate those costs to the writer, reader, or cache.
What: The article analyzes the four core questions of MVCC implementation, demonstrating that every database engine (Oracle, InnoDB, SQL Server, MongoDB, etcd) pays a price for versioning.
Why it matters: Understanding that no MVCC implementation is free helps engineers choose the right failure mode—be it Postgres's vacuum management or the 'snapshot too old' errors of undo-based systems.
Takeaway: Don't treat MVCC bloat as a defect to be 'fixed' by switching engines; tune your workload's fillfactors and vacuum settings to live with the design.
Deep dive
  • Four Pillars: Where versions live, chain direction, index references, and cleanup strategy.
  • Postgres Costs: Heap-only tuples cause write amplification, table bloat, and vacuum pressure.
  • Undo-based Costs: InnoDB and Oracle move the burden to the writer (rollback) and reader (reconstruction).
  • The Idle Lunch: Every engine fails when a transaction is left open, either by bloating or by cancelling readers.
  • Evolution: Postgres is shrinking its overhead through internal features like HOT updates, B-tree deduplication, and improved vacuum strategies.
Decoder
  • MVCC (Multi-Version Concurrency Control): A database technique that allows multiple versions of a row to coexist to avoid read/write blocking.
  • HOT (Heap-Only Tuples): A Postgres optimization where updates are stored on the same page as the original, preventing index updates.
Original article

Full article content is not available for inline reading.

Read the original article →

Explore all 58 articles in today's digest

Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi