본문으로 건너뛰기
데이터베이스 기초집LESSON 11

EXPLAIN으로 실행 계획 읽기

난이도초급 → 중급
예상 시간35분
선수지식이전 강의

11강. EXPLAIN으로 실행 계획 읽기

1. 이번 강의에서 해결할 문제

인덱스를 만들었다는 사실만으로 쿼리가 빨라졌다고 판단할 수 없습니다. 랭킹 조회의 예상 계획과 실제 실행을 비교해 추정 오류와 병목 지점을 찾습니다.

2. 학습 목표

3. 핵심 개념

PostgreSQL 플래너는 통계로 여러 실행 방법의 비용을 추정해 계획 트리를 만듭니다. Seq Scan, Index Scan, Bitmap Heap Scan, Nested Loop, Hash Join은 서로 다른 접근 방식입니다. EXPLAIN ANALYZE는 쿼리를 실제 실행하므로 실제 행 수와 시간을 보여주지만 변경 쿼리에도 실제 변경을 일으킵니다.

4. 단계별 예시

파일 경로: C:\dev\game-ranking-service\database\sql\11-explain.sql

database/sql/11-explain.sql
ANALYZE ranking.games;
ANALYZE ranking.match_results;

EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
SELECT mr.player_id, mr.score, g.started_at
FROM ranking.match_results AS mr
JOIN ranking.games AS g ON g.game_id = mr.game_id
WHERE mr.player_id = 42
AND g.status = 'finished'
ORDER BY g.started_at DESC
LIMIT 20;
PowerShell · 계획 저장
New-Item -ItemType Directory -Force .\docs\database\plans
psql -d game_ranking_dev -f .\database\sql\11-explain.sql | Tee-Object .\docs\database\plans\player-history.txt

5. 동작 원리

각 노드는 아래에서 행을 만들고 위 노드가 이를 소비합니다. 예상 rows와 실제 rows 차이가 크면 통계가 오래됐거나 열 간 상관관계를 반영하지 못했을 수 있습니다. BUFFERS는 캐시에서 읽은 블록과 디스크 읽기 관점을 제공해 단순 실행 시간보다 재현 가능한 단서를 줍니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

EXPLAIN으로 실행 계획 읽기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“EXPLAIN으로 실행 계획 읽기”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“EXPLAIN으로 실행 계획 읽기”의 작업 기준으로 ‘UPDATE에 EXPLAIN ANALYZE를 바로 실행’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

11강. EXPLAIN으로 실행 계획 읽기 미완료 상태