Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

Vacuum 목적 및 종류 본문

PostgreSQL/Vacuum

Vacuum 목적 및 종류

`O` 2021. 3. 8. 02:11
728x90
반응형

이 페이지에서는 Vacuum 의 목적과 종류, 기타 파라미터에 대해서 다룬다.

 

참고자료 및 사진출처 

https://www.postgresql.org/docs/9.4/sql-vacuum.html)

https://www.slideshare.net/masahikosawada98/inside-vacuum?from_action=save

 

 

아래의 내용을 확인 전 아래의 페이지를 먼저 숙지하고 오면 좋다.

2021.04.16 - [PostgreSQL/아키텍처 및 내부 구조] - PostgreSQL / PPAS DB Age

 

 

Vacuum 목적

 

Vacuum 은 크게 2가지의 목적을 가진다.


- DML 로 인하여 사용된 데이터 블록을 다시 사용 할 수 있도록 회수 및 단편화 제거 (Garbage Collect)


- Transaction ID 회수

 

 

Vacuum 유형

 

Vacuum 은 크게 일반 Vacuum 과 Vacuum Full 로 나뉜다.

 

일반 Vacuum 은 update, delete 로 인하여 갱신이 되어서 더이상 사용되지 않는 블록 및 트랜잭션 ID 를 회수하나 단편화로 발생한 블록들까지 회수 및 정리 하진 않는다. Vacuum Full 은 위의 Vacuum 에 단편화 블록까지 정리한다. 단, 이 기능은 대상 테이블 전체를 Lock 하므로 주의가 필요하다.

 

추가로 Analyze 명령어를 쓰면 테이블 통계수치도 갱신을 해준다.

이를 위의 Vacuum 종류에 근거하여 수동 Vacuum 및 Autovacuum 을 수행 및 설정 할 수 있다.

 

 

- 수동 Vacuum 

 

말 그대로 유저가 명령어를 통하여 수행하는 작업이다. 

 

- autovacuum


autovacuum 프로세스는 위의 Vacuum + Analyze 를 같이 정기적으로 자동 수행 해 주는 프로세스다.

 

 

postgresql.cnf 에서 이에 대한 설정, 주기등을 조절 할 수 있다. 이와 관련된 대표적인 파라미터는 아래와 같다.

 

 

vacuum_freeze_min_age

 

PostgreSQL 은 약 40억개의 트랜잭션을 배정 할 수 있는데 이미 배정되어 보관이 필요한 영역과 차후 새로 배정받을 영역을 절반씩으로 나누는 기준인 FrozenXID 를 설정하게 된다. Vacuum 이 이 기능을 수행하는데, 해당 파라미터를 통하여 얼마나 트랜잭션들을 보관하고 남은 트랜잭션을 배정할 트랜잭션으로 남길지 설정 할 수 있다. 

작을 수록 더 많은 진행 예정인 트랜잭션을 배정 할 수 있고, 클 수록 더 많은 트랜잭션을 보관 할 수 있다.

 

vacuum_freeze_table_age

 

테이블 단위로 특정 age 에 도달하면 이를 FrozenXID 로 기준을 삼아 테이블 vacuum 을 수행한다. 기본값은 12버전 기준 1억 5천이다. 

 

autovacuum 

 

autovacuum 을 on off 설정하는 파라미터다.

 

autovacuum_max_workers (integer)

 

autovacuum 은 프로세스로써 복수개로 작동되도록 설정 할 수 있다. 몇개의 프로세스를 사용 할 지 설정하는 값이다.

 

autovacuum_freeze_max_age (integer)

 

수동으로 vacuum 을 수행하지 않더라도 설정 값 이상으로 age 가 상승하면 자동으로 vacuum 이 수행되게 하는 파라미터다.

 

 

그외의 기타 파라미터는 아래의 링크를 확인한다.

 

postgresql.kr/docs/9.4/runtime-config-client.html#GUC-VACUUM-FREEZE-MIN-AGE (vacuum 으로 검색)

postgresql.kr/docs/9.4/runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE

반응형

'PostgreSQL > Vacuum' 카테고리의 다른 글

Vacuum 예시  (0) 2021.03.08
Comments