목록 보기
PostgreSQL 튜닝 - Autovacuum 최적화에 대하여
백엔드

PostgreSQL 튜닝 - Autovacuum 최적화에 대하여

엔라이즈
엔라이즈
2020년 10월 18일

두줄요약

PostgreSQL MVCC에서 발생하는 dead tuple과 Autovacuum의 동작 기준을 설명했습니다. 테이블별 임계값·비용 설정과 모니터링으로 Data Bloat를 줄이는 방법을 제시합니다.

구조와 흐름

  • MVCC의 update·delete 과정에서 기존 tuple이 dead tuple로 잔존하고 Vacuum이 이를 FSM에 반환하는 구조
  • dead tuple 누적으로 인한 Data Bloat, 디스크 I/O 증가, 통계 왜곡과 select 성능 저하 가능성
  • Autovacuum의 scale factor·threshold 기반 실행 기준과 대용량 테이블에서의 지연 문제

해결 방법

  • pg_stat_user_tables 기반 dead/live tuple 비율과 최근 vacuum·analyze 시각 모니터링
  • 테이블별 autovacuum_vacuum_scale_factor 0 설정과 threshold 지정으로 실행 주기 고정
  • autovacuum_vacuum_cost_limit, analyze 기준, work memory, worker 수의 환경별 조정

성능/운영 포인트

  • 대규모·빈번한 update/delete 테이블에서 dead tuple 누적 전 조기 vacuum 유도
  • autovacuum_max_workers 변경 시 PostgreSQL 재시작 필요와 XID Freeze 지연 위험 고려
  • Full Vacuum의 테이블 lock·저장 공간 축소 효과와 Autovacuum의 공간 재사용 특성 구분

주의할 점

  • 기본 Autovacuum 설정의 광범위한 호환성 중심 특성
  • pg_repack 수행 중 시작·종료 순단과 높은 데이터베이스 리소스 소비 가능성
  • 서비스별 트랜잭션·테이블 규모에 따른 지속적 모니터링과 개별 튜닝 필요

다음 읽기

#PostgreSQL 주제를 다룬 다른 회사 글

pgstattuple extension을 사용한 PostgreSQL 성능 향상

pgstattuple 확장으로 PostgreSQL 테이블과 인덱스의 팽창, 단편화, 여유 공간을 진단하는 방법을 소개했습니다. VACUUM, pg_repack, REINDEX와 자동화 전략으로 성능을 유지하는 실무 팁을 정리했습니다.

AWS
AWS
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...