Useful PostgreSQL utilities
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

18 lines
1.4 KiB

-- List active vacuums and their progress
SELECT p.pid
, date_trunc('second',now() - a.xact_start) AS dur
, coalesce(wait_event_type ||'.'|| wait_event, 'f') AS wait
, CASE WHEN a.query ~ 'to prevent wraparound' THEN 'freeze' ELSE 'regular' END AS mode
, (SELECT datname FROM pg_database WHERE oid = p.datid) AS dat
, p.relid::regclass AS tab
, p.phase
, round((p.heap_blks_total * current_setting('block_size')::int)/1024.0/1024) AS tab_mb
, round(pg_total_relation_size(relid)/1024.0/1024) AS ttl_mb
, round((p.heap_blks_scanned * current_setting('block_size')::int)/1024.0/1024) AS scan_mb
, round((p.heap_blks_vacuumed * current_setting('block_size')::int)/1024.0/1024) AS vac_mb
, (100 * p.heap_blks_scanned / nullif(p.heap_blks_total,0)) AS scan_pct
, (100 * p.heap_blks_vacuumed / nullif(p.heap_blks_total,0)) AS vac_pct
, p.index_vacuum_count AS ind_vac_cnt
, round(p.num_dead_tuples * 100.0 / nullif(p.max_dead_tuples, 0),1) AS dead_pct
FROM pg_stat_progress_vacuum p JOIN pg_stat_activity a using (pid) ORDER BY dur DESC;