PostgreSQL のVACUUM実行の指標

PostgreSQL VACUUM は、いつやるべきか?

不要になったタプルが増えた時に行うべき。

SELECT  relname,
  n_live_tup,
  n_dead_tup,
  CASE n_dead_tup WHEN 0 THEN 0 ELSE round(n_dead_tup*100/(n_live_tup+n_dead_tup) ,2) END AS ratio
FROM
  pg_stat_user_tables 
WHERE  relname = 'テーブル名' 
;

n_dead_tup が、増えた時→ ratio が 5 % 位なら不要であろう。

あるいは、関数 pgstattuple で求めるべきかな。。

SELECT * FROM pgstattuple('pg_catalog.pg_proc');
説明
table_len bigint リレーションのバイト単位の物理長
tuple_count bigint 有効なタプル数
tuple_len bigint 有効なタプルの物理長(バイト単位)
tuple_percent float8 有効タプルの割合
dead_tuple_count bigint 無効なタプル数
dead_tuple_len bigint バイト単位の総不要タプル長
dead_tuple_percent float8 不要タプルの割合
free_space bigint バイト単位の総空き領域
free_percent float8 空き領域の割合