본문 바로가기
데이터베이스/PostgreSQL 내부 구조

PostgreSQL 내부 구조 — 시리즈를 시작하며

by 조민서 2026. 4. 16.

PostgreSQL(18버전) 의 내부 동작 원리를 공식 문서를 참고해 정리한 시리즈다. 목차 순서로 정리하지만 중간에 기본 개념이 생략된 부분이 있을 수 있다.

 

시리즈 목차

각 편은 앞 편의 개념을 회수하며 이어진다.

  1. 8KB 페이지와 Shared Buffers
    PostgreSQL의 모든 데이터가 저장되는 단위인 8KB 페이지의 내부 구조, 튜플 헤더, ctid, 그리고 메모리 캐시 역할을 하는 shared buffers.
  2. MVCC와 격리 수준
    PostgreSQL이 행을 덮어쓰지 않고 여러 버전을 만드는 이유. xmin/xmax 기반 가시성 판단, 4가지 격리 수준이 막는 이상현상, 쓰기 스큐.
  3. Locking
    MVCC만으로 풀리지 않는 쓰기-쓰기 충돌과 DDL 조율. 테이블 락 8단계, 행 락, 데드락, 운영에서 자주 만나는 lock wait.
  4. VACUUM
    MVCC가 남기는 dead tuple을 누가 어떻게 치우는가. Visibility Map, autovacuum, 트랜잭션 ID wraparound 방지.
  5. WAL과 Checkpoint
    크래시가 나도 데이터가 살아남는 메커니즘. Write-Ahead Logging의 원칙, full page writes, 체크포인트, synchronous_commit.
  6. 인덱스
    B-tree, GiST, GIN, BRIN의 사용처. PostgreSQL의 모든 인덱스가 보조 인덱스라는 것의 의미, Index Only Scan과 Visibility Map의 관계.
  7. Scan과 Optimizer
    Sequential / Index / Index Only / Bitmap Scan의 차이. 비용 기반 경로 선택, 통계 정보, EXPLAIN 읽는 법, 자주 만나는 함정들.
  8. TOAST
    한 행이 8KB 페이지를 넘는 큰 값을 PostgreSQL이 어떻게 처리하는가. 4가지 storage 모드, 압축 알고리즘(pglz vs lz4), 1GB 컬럼 한계의 정체.

 

 

 

관련 링크