UPDATE는 옛 행 버전을 남겨
MVCC는 UPDATE 때 새 행 버전을 만들고 옛 버전을 죽었다고 표시해. 오래된 스냅샷이 끝나면 VACUUM이 그 공간을 다시 쓸 수 있게 해.
일반 VACUUM과 FULL은 다르다
일반 VACUUM은 공간을 재사용 가능하게 하고 가시성 지도를 갱신해, 색인 전용 스캔이 불필요한 힙 방문을 피할 수 있게 해. ANALYZE를 함께 실행하면 계획기가 쓰는 통계도 갱신해. VACUUM FULL은 테이블 전체를 다시 써 디스크를 줄이지만 강한 잠금을 잡으므로 거의 필요 없어.
autovacuum이 따라오는지 봐
변경이 잦은 큰 테이블에서는 기본 비율 20%가 너무 늦을 수 있어. 이때 autovacuum_vacuum_scale_factor를 5%처럼 낮출 수 있어. pg_stat_user_tables의 n_dead_tup이 백만 단위로 쌓이면 autovacuum이 따라가지 못한다는 신호야. 긴 idle in transaction도 함께 확인해.