Monitoring
The Monitoring tab takes a snapshot of database health and re-samples it on an interval. Use the Auto-refresh selector (Off / 5s / 10s / 30s / 60s — default 10s) to control the cadence; “Last sample” in the header shows how fresh the data is.
All metrics come from PostgreSQL’s own statistics views (pg_stat_database, pg_stat_activity,
pg_locks, and friends) via read-only queries.
Performance cards
- Cache Hit — buffer cache hit ratio. Sustained values well below ~99% on a hot dataset suggest the working set doesn’t fit in memory.
- TPS — transactions per second, derived between samples.
- Connections — active connections against the server’s
max_connections. - Deadlocks — cumulative deadlock count.
Sections
- Tuple Activity — inserts, updates, deletes, fetched and returned tuples per second, and the fetch ratio.
- Active Locks — appears when locks are held: each lock mode with total, granted, and waiting counts. Waiting locks are the ones to investigate.
- Table Health — the top 20 tables by dead tuples: live rows, dead rows, dead percentage, and last vacuum / last autovacuum times. High dead percentages with stale vacuum times mean bloat is accumulating.
- Index Efficiency — the top 20 tables compared by sequential vs index scans, with an index usage percentage. A big table with heavy sequential scanning is a classic missing-index signal.
- Slow Queries — the top 10 statements by total execution time, with calls, total, mean, and rows.
Slow queries need pg_stat_statements
The Slow Queries section requires the pg_stat_statements extension. If it isn’t installed, the
section says so — the rest of the tab works regardless. You can install it from the
Privilege Analysis tab’s Enable Extension button (which runs
CREATE EXTENSION IF NOT EXISTS pg_stat_statements; and needs sufficient database rights, plus
the extension present in shared_preload_libraries on most setups).
Note the mean/total times shown are what pg_stat_statements records — AccessVault doesn’t
compute latency percentiles.