PostgreSQL

Table bloat increases sequential scan cost linearly

warning
performanceUpdated Mar 4, 2026
Technologies:
How to detect:

Late vacuuming causes table bloat, increasing the main table fork size. Sequential scan I/O cost is calculated as pages * seq_page_cost, so bloated tables with many dead rows still incur full scan cost for outdated data.

Recommended action:

Monitor table bloat regularly using pg_class.relpages. Tune autovacuum parameters to run more aggressively on high-churn tables. Consider manual VACUUM during maintenance windows for severely bloated tables. Review autovacuum logs to identify tables not being vacuumed frequently enough.