테이블 bloat 추정
PostgreSQL스토리지명령어
SELECT schemaname, relname AS table_name, n_dead_tup AS dead_rows, n_live_tup AS live_rows, round(n_dead_tup::numeric / NULLIF(n_live_tup + n_dead_tup, 0) * 100, 1) AS dead_pct, last_autovacuum FROM pg_stat_user_tables WHERE n_dead_tup > 0 ORDER BY n_dead_tup DESC LIMIT 20;하는 일
dead tuple 수와 마지막 autovacuum 시각을 기준으로 bloat 비율을 보여 준다.
사용 시점
VACUUM 필요 여부와 autovacuum이 따라가고 있는지 판단하기 위해.
주의
n_dead_tup은 DML 카운터로 계속 갱신되는 추정치다(VACUUM 후 감소하며, ANALYZE는 추정치만 보정한다). 정확한 물리적 bloat은 pgstattuple 확장(pgstattuple('customer'))이 더 정확하다.