Maintaining Large Tables in PostgreSQL | POSETTE: An Event for Postgres 2026
Sarat Balijepalli explains the operational and performance problems that show up when PostgreSQL tables grow large, with specific notes for Azure Database for PostgreSQL.
Overview
The session focuses on common failure modes that appear as tables scale in PostgreSQL and how to address them as a connected set of symptoms of unsustainable data growth.
Problems large tables create at scale
- Autovacuum falling behind leading to accumulating dead tuples and degraded performance.
- Table bloat building up silently over time.
- Planner misestimation (statistics issues) causing poor query plans.
- WAL volume explosions increasing storage/IO pressure and contributing to downstream issues.
- Maintenance operations colliding with production traffic, creating instability.
Practical strategies to sustain performance (including Azure Database for PostgreSQL considerations)
- Per-table autovacuum tuning
- Adjust autovacuum behavior at the table level to match growth and churn patterns.
- Bloat and statistics management
- Keep statistics fresh to reduce planner misestimation.
- Manage bloat proactively rather than treating it as an occasional cleanup task.
- Maintenance options
- Choose maintenance approaches that reduce disruption and avoid compounding production load.
- Observability guardrails
- Put monitoring in place to detect early signals (autovacuum lag, bloat growth, WAL pressure, lock contention) before they become outages.
Architectural questions: when a single large table stops being the right abstraction
The talk closes by comparing alternatives for handling continued growth:
- Partitioning
- Hot/cold splits (separating frequently accessed data from colder historical data)
- Rollup tables
- Sharding
- Offloading analytical workloads to reduce pressure on the primary OLTP path
Video chapters
- 00:00 – Music & introduction
- 01:58 – Autovacuum limits and table bloat
- 03:16 – Cache inefficiency and I/O bottlenecks
- 04:20 – Vacuum / freeze storms explained
- 06:33 – WAL volume explosion and replication lag
- 09:18 – Lock contention, cascading blocks, and statistics staleness
- 11:21 – HOT update failures and performance optimizations
- 15:31 – Autovacuum tuning strategies that work
- 20:06 – Preserving HOT updates and controlling WAL pressure
- 23:09 – Reducing lock contention and keeping stats fresh
- 26:36 – Closing
Links
- POSETTE conference: https://posetteconf.com
- POSETTE talks playlist: https://aka.ms/posette-playlist
- POSETTE on LinkedIn: https://www.linkedin.com/company/posetteconf/
- POSETTE on X: https://x.com/PosetteConf
- POSETTE on Mastodon: https://mastodon.social/@posetteconf
- POSETTE on Bluesky: https://aka.ms/posette-on-bluesky
- Microsoft for PostgreSQL on LinkedIn: https://www.linkedin.com/company/microsoft-for-postgresql/