Back to list

MVCC version copying creates excessive data duplication

6/10 Medium

PostgreSQL's MVCC implementation copies all columns of a tuple when any column is modified, regardless of which columns change. This causes significant data duplication and increased storage demands, especially for large tables with many columns. No practical workaround exists without major PostgreSQL rewrites.

Category
performance
Workaround
none
Freshness
persistent
Scope
single_lib
Upstream
wontfix
Recurring
Yes
Buyer Type
enterprise

Sources

Collection History

Query: “What are the most common pain points with PostgreSQL for developers in 2025?3/29/2026

When a query modifies a tuple, regardless of whether it updates one or all of its columns, PostgreSQL creates a new version by copying all of its columns. This copying can result in significant data duplication and increased storage demands, particularly for tables with many columns and large row sizes. Unfortunately, there are no workarounds to address this issue without a significant rewrite of PostgreSQL's internals.

Created: 3/29/2026Updated: 3/29/2026