VACUUM - autovacuum 실행 시점

yshjft·2024년 12월 2일
0

Postgresql

목록 보기
8/11

AutoVacuum

  • vacuumanti wraparound vacuum을 자동적으로 실행해주는 것을 AutoVacuum이라고 합니다.

AutoVacuum의 실행시점

Dead Tuple의 누적치가 임계치에 도달했을 때

  • 쿼리 성능 또는 저장장치의 효율성을 위해서 실행됩니다.
  • 임계치 공식
    • autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * (전체 튜플 수)
    • autovacuum_vacuum_scale_factor
      • 기본 0.2
    • autovacuum_vacuum_threshold
      • 기본 50

Table이나 Tuple의 age가 누적되어 임계치에 도달했을 때

  • Transaction ID Wraparound 현상을 방지하기 위해 실행됩니다.
  • 임계치 도달 경우
    • 테이블의 age의 autovacuum_freeze_max_age를 초과하는 경우 강제 및 자동으로 anti wraparound vacuum 수행
    • vacuum 수행 시 vacuum_freeze_table_age < 테이블 age < autovacuum_freeze_max_age 경우 anti wraparound vacuum 수행
    • autovacuum_freeze_max_age
      • 기본 20억
      • AutoVacuum이 off되어도 강제로 수행됩니다.
    • vacuum_freeze_table_age
      • 기본 1억 5천만
      • anti wraparound vacuum을 분산합니다.
    • vacuum_freeze_min_age
      • 기본 5천만
      • 해당 값을 초과하는 age의 tuple을 freeze 처리합니다.
        • vacuum_freeze_min_age를 작게 할 수록 더 많은 데이터를 보관 처리할 수 있습니다.

AutoVacuum을 실행한다고 동시에 vacuumanti wraparound vacuum이 실행되는 것은 아닌거 같습니다. 상황에 따라 vacuum 또는 anti wraparound vacuumAutoVacuum으로 인해 실행되는거 같습니다.

profile
꾸준히 나아가자 🐢

0개의 댓글