공부하자,,,,
PostgreSQL Vacuum에 대한 거의 모든 것 | 우아한형제들 기술블로그
PostgreSQL을 사용하신다면 반드시 알아야 하는 개념! Vacuum에 대해 같이 알아봅시다
techblog.woowahan.com
Vacuum은 PostgreSQL의 진공청소기 역할을 하는 동작입니다.개발자분들에게 친숙한 GC (Garbage Collector)의 역할을 하는 동작이기도 하고요.
Vacuum은 PostgreSQL의 MVCC 구현 방법이 Oracle이나 MySQL 등 다른 DBMS와 다르고그 차이로 인해 발생하는 문제점을 해결하기 위한 PostgreSQL만의 특별한 동작인데요.
Vacuum을 DB단에서 자동으로 수행하는 동작을 AutoVacuum이라고 하며Vacuum & AutoVacuum(이하 Vacuum으로 통일)을 통해 아래 4가지 작업을 수행합니다.
-임계치 이상으로 발생한 Dead Tuple을 정리하여 FSM (Free Space Map) 으로 반환
-Transaction ID Wraparound 방지
-통계정보 갱신
-visibility map을 갱신하여 index scan 성능 향상
위 4개의 동작 모두 중요하지만 그 중 특히 중요한 것은
Dead Tuple을 정리하는 동작과 Trasaction ID Wraparound 방지 동작입니다.
아래는 최적화 방법...
PostgreSQL 튜닝 - Autovacuum 최적화에 대하여
엔라이즈 개발팀은 2014년부터 PostgreSQL 을 꾸준히 사용해 왔습니다. 그동안 PostgreSQL 을 사용하면서 알게 된 다양한 최적화 방법들을 앞으로 작성할 여러 글들을 통해 공유 하고자 합니다. 이번 글
nrise.github.io
// 참고
/VACUUM 실행 기준 =
autovacuum_vacuum_threshold
+ (autovacuum_vacuum_scale_factor × 테이블의 총 튜플 수) */
alter table TABLE set (
autovacuum_vacuum_threshold = 1000, -- 기본값: 50
autovacuum_vacuum_scale_factor = 0.05, -- 기본값: 0.2
autovacuum_analyze_threshold = 500, -- 기본값: 50
autovacuum_analyze_scale_factor = 0.02 -- 기본값: 0.1
);