A curated set of SQL queries for monitoring PostgreSQL autovacuum health, covering dead tuple accumulation (vacuum urgency), table bloat via pgstattuple, autoanalyze urgency, visibility map coverage for index-only scans, and transaction ID / multixact ID wraparound. Each query accounts for per-table storage option overrides and PostgreSQL version differences (e.g., autovacuum_vacuum_max_threshold in v18). The post also explains what each metric means and what actions to take when thresholds are exceeded.

7m read timeFrom cybertec-postgresql.com
Post cover image
Table of contents
Autovacuum: a workhorse with many tasksMonitor autovacuum deleting dead tuplesMonitor table bloatMonitor autoanalyzeMonitor autovacuum maintaining the visibility mapMonitor autovacuum preventing wraparound problemsConclusion

Sort: