본문 바로가기

PostgreSQL

Vacuum, Auto Vacuum

Vacuum의 목적

 

공간 재활용

1) 오래된 이전 버전 레코드 삭제 작업을 통한 공간 확보 (Vacuum)

2) 오래된 이전 버전 레코드 삭제 작업 후에 공간 압축 (Vacuum Full)

XID Frozen

Vacuum 수행 시에 필요한 레코드에 대해서 수행됨

Anti-Wraparound Vacuum이라고 함

 

Vacuum DML과 호환된다.

Vacuum Full DML 뿐 아니라 SELECT와도 호환되지 않는다. (PG_REPACK 익스텐션 고려)

 

Autovacuum이 하는 일

1) 데이터 변경에 따른 자동 통계 수집

2) XID 증가에 따른 Anti-Wraparound Vacuum 수행

 

9.6 버전부터 Anti-Wraparound Vacuum 문제가 해결됨

Visibility Map ALL_FROZEN 비트를 추가함

Visibility Map은 블록 당 2 비트로 구성됨 (1비트는 ALL_VISIBLE, 1비트는 ALL_FROZEN)

블록 내의 모든 레코드가 Frozen 됐으면 ALL_FROZEN 비트는 1로 설정됨

따라서 다음 Frozen 작업 시에 해당 블록들은 SKIP

 

'PostgreSQL' 카테고리의 다른 글

COST 계산에 이용되는 파라미터 / 통계 정보  (0) 2021.04.23
HOT (Heap Only Tuple)  (0) 2021.04.23
MVCC (다중 버전 읽기 일관성)  (0) 2021.04.23
Shared Buffer Tuning  (0) 2021.04.23
PostgreSQL 아키텍처  (0) 2021.04.23