blog

Postgres MVCC, Fillfactor, HOT, SPC 개념잡기

날짜: 2025-07-15

목록으로


PostgreSQL의 MVCC, fillfactor, HOT update, Single Page Cleanup은 데이터 수정/삭제 시 성능과 공간 효율을 높이기 위해 유기적으로 작동하는 핵심 메커니즘입니다.

이 네 가지는 서로 밀접하게 연결되어 있으므로, 각 개념을 설명하고, 동작 흐름을 따라 상관관계를 정리해드리겠습니다.

1. MVCC (Multi-Version Concurrency Control)

PostgreSQL의 기본적인 동시성 제어 방식으로, 읽기-쓰기 충돌 없이 트랜잭션을 격리하기 위해 데이터의 여러 버전을 유지합니다.

2. fillfactor

PostgreSQL에서 테이블 또는 인덱스를 생성/변경할 때 설정할 수 있는 page 내 row 저장 밀도 설정값입니다. 기본값은 100(즉, 페이지를 가득 채움).

동작 방식 • fillfactor = 70으로 설정 시, 한 페이지의 70%만 row로 채우고 30%는 free space로 남김 • 이 여유 공간은 HOT update와 같이 동일 페이지 내 row update를 가능하게 만들어줌

목적 • 업데이트 성능 향상 • page split이나 불필요한 page 이동 방지

3. HOT Update (Heap-Only Tuple Update)

MVCC 기반 업데이트 시 새로운 row를 생성하되, 인덱스 재작성 없이 현재 페이지 내에서만 row version을 교체하는 최적화 기법입니다.

4. Single Page Cleanup (SPC)

PostgreSQL 13부터 도입된 페이지 단위 미니 VACUUM 기능. 필요 시 페이지 단위로만 불필요한 tuple 제거.

개념 간 상관관계 요약

흐름도 요약

  1. MVCC → update 시 row 누적
  2. fillfactor → 페이지 내 여유 공간 확보
  3. HOT update → 인덱스 무수정 + 같은 page 내 row 교체
  4. Single Page Cleanup → dead tuple 실시간 정리

✅ 최신 PostgreSQL 기준 유의사항 (2025 기준)


목록으로