PostgreSQL는 vacuum을 통해서 테이블 사용하는 공간에 대한 최적화 및 cleanup을 진행

 

해당 설정은 postgresql.conf에서 지정

 

1) vacuum wakeup 설정

   autovacuum_naptime = 1   (1분마다 실행)

2) vacuum worker 프로세스 설정

   autovacuum_max_workers = 3  (3개 worker fork)

3) vacuum 수행 기준

   autovacuum_vacuum_threshold = 50    (50개 row이상 변경시 공간 정리)

   autovacuum_analyze_threshod = 50     (50개 row이상 변경시 통계 정보 수집)

   autovacuum_vacuum_scale_factor = 0.2   (전체 데이터중 20%이상 변경시 공간 정리)

   autovacuum_analyze_scale_factor = 0.1   (전체 데이터중 10%이상 변경시 통계 정보 수집)

 

vacuum full은 테이블에 lock을 걸고 전체를 rewrite하는 작업을 함으로 큰 테이블에 대해서는 안하는게 좋음

 

 

CREATE TABLE test (id int) WITH (autovacuum_enabled = off);   -- vacuum off

INSERT INTO test SELECT * FROM generate_series(1, 100000);

 

SELECT pg_size_pretty(pg_relation_size('test'));  -- table size check

VACUUM test;

 

delete하고 나서 연속된 공간이 확보되지 않는 이상 vacuum를 진행한다고 해도 사이즈는 줄어들 

가능성이 없음

 

 

'RDB > PostreSQL' 카테고리의 다른 글

PostgreSQL 12 테이블 조인 방식  (0) 2020.05.04
PostgreSQL 12 snapshot too old  (0) 2020.04.29
PostgreSQL 12 lock  (0) 2020.04.27
PostgreSQL 12 transactions  (0) 2020.04.22
PostgreSQL 12에 신규 기능  (0) 2020.04.20

+ Recent posts