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 |