🐘 PostgreSQL 학습 홈
"가장 앞선 오픈소스 관계형 데이터베이스"를 그림과 애니메이션으로 배웁니다. 14개 챕터로 아키텍처의 뼈대부터 운영·트러블슈팅까지 — 눈으로 보면 절반은 이해한 것입니다.
한눈에 보는 PostgreSQL — SELECT 한 방의 여정
PostgreSQL의 전체 구조를 이 애니메이션 하나로 먼저 느껴보세요. SELECT 한 문장이 클라이언트를 떠나 결과로 돌아오기까지의 여정입니다. 여기 등장하는 등장인물(postmaster, backend, shared buffers, 디스크)이 앞으로 14개 챕터의 주인공들입니다.
클라이언트가 TCP 5432 포트로 접속을 요청합니다. 이 요청을 받는 것은 postmaster — 쿼리를 직접 처리하지 않는 "감독관" 프로세스입니다.
postmaster가 fork()로 backend 프로세스를 하나 만들어 줍니다. 연결 1개 = 프로세스 1개, PostgreSQL의 상징적인 설계입니다.
이후 클라이언트는 backend와 직접 대화합니다. SELECT 문장이 backend에 도착해 파싱·계획 수립을 거칩니다.
backend는 필요한 데이터 페이지를 먼저 shared buffers(공유 메모리 캐시)에서 찾습니다.
캐시에 없으면(cache miss) 디스크에서 8KB 페이지를 읽어 shared buffers에 올립니다. 다음번엔 캐시에서 바로 꺼내겠죠.
페이지에서 조건에 맞는 행을 골라 클라이언트에 돌려주면 여정 끝! 이 한 번의 왕복에 아키텍처(2장)·스토리지(4장)·플래너(6장)의 모든 개념이 들어 있습니다.
챕터 한눈에 보기
🧱 기초 — 뼈대 세우기
01. PostgreSQL 개요와 철학
ORDBMS의 정체성, 30년 설계 철학, MySQL·Oracle·ClickHouse와 갈라지는 지점.
02. 아키텍처 — 프로세스와 메모리
postmaster의 fork, shared buffers, 쿼리가 처리되는 4단계 경로.
03. MVCC — 동시성의 비밀
읽기가 쓰기를 막지 않는 마법. xmin/xmax, 스냅샷, dead tuple의 탄생.
04. Storage · Tuple · TOAST
8KB 페이지의 해부. 튜플이 쌓이는 방식과 큰 값이 밀려나는 TOAST.
🔍 쿼리와 트랜잭션 — 성능의 핵심
05. 인덱스 완전 정복
B-tree부터 GIN·BRIN까지 6종 인덱스, 언제 무엇을 쓸지의 선택 기준.
06. 쿼리 플래너와 EXPLAIN
비용 기반 옵티마이저의 속마음. 통계·cost 모델·EXPLAIN 읽는 법.
07. 트랜잭션과 격리 수준
Dirty Read부터 Serialization Anomaly까지, 격리 수준과 Lock·Deadlock.
🛠 운영의 핵심 — 장애 없는 하루
08. VACUUM과 Autovacuum
dead tuple 청소부의 모든 것. Bloat와 XID Wraparound에서 살아남기.
09. WAL과 Checkpoint
"커밋했으면 절대 안 잃는다"의 원리. WAL, fsync, 크래시 복구.
10. Replication — 복제
Streaming/Logical 복제, replication slot, 장애 조치(failover)의 기본.
11. 백업과 PITR 복구
pg_dump vs pg_basebackup, WAL 아카이브로 "그 시각"으로 되감기.
🧩 확장과 관리 — 더 크게, 더 넓게
12. 파티셔닝
선언적 파티셔닝과 파티션 pruning. 대용량 테이블 다루기.
13. Extension 생태계
pg_stat_statements·PostGIS·pgvector — 커널 수정 없는 기능 확장.
14. 모니터링과 트러블슈팅
pg_stat_* 뷰 활용법과 실전 장애 대응 시나리오.
추천 학습 경로
목적에 따라 골라 읽어도 좋습니다. 화살표 순서대로 읽으면 앞 장의 개념이 뒷 장의 발판이 됩니다.
원문 저장소의 보너스 자료
이 사이트는 postgresql-guide 저장소의 챕터 문서를 시각화한 것입니다. 저장소에는 챕터 외에도 실무에 바로 쓰는 자료가 함께 있습니다.
각 챕터 하단의 "이 장 완료로 표시" 버튼을 누르면 사이드바에 ✓ 표시가 남습니다(브라우저 로컬 저장). 부담 없이 하루 한 챕터씩 진행해 보세요.