TechBridge

EXPLAIN & EXPLAIN ANALYZE — 실행계획 완전 해석

← 목록으로

📋 실습 안내

✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기 내 코드 실행 결과
🎯 완성 미리보기 목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기 이번 강의 전용
  선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. EXPLAIN과 EXPLAIN ANALYZE의 가장 큰 차이는?
💡 EXPLAIN은 실제 실행 없이 플래너의 예측 실행 계획만 보여줍니다. EXPLAIN ANALYZE는 쿼리를 실제 실행하여 각 노드의 실제 소요 시간과 행 수를 측정합니다. DELETE/UPDATE에 EXPLAIN ANALYZE를 사용할 때는 반드시 BEGIN/ROLLBACK으로 감싸야 합니다.
Q2. cost=0.42..8.44 에서 0.42가 의미하는 것은?
💡 cost=시작비용..총비용 형태입니다. 0.42는 첫 번째 행을 반환하기까지의 시작 비용(start-up cost)이고, 8.44는 모든 행을 반환하는 총 비용입니다. 이 값은 ms가 아닌 임의 비용 단위입니다.
Q3. EXPLAIN ANALYZE에서 rows=10000이지만 actual rows=50일 때 의미하는 것은?
💡 플래너의 예측 행 수(rows)와 실제 행 수(actual rows)의 큰 차이는 통계가 오래되었거나 데이터 분포가 편향되어 있음을 나타냅니다. ANALYZE를 실행하여 통계를 갱신하면 플래너가 더 정확한 계획을 수립할 수 있습니다.
Q4. EXPLAIN (ANALYZE, BUFFERS)에서 "shared read=100"이 의미하는 것은?
💡 Buffers에서 "shared hit"은 캐시(공유 버퍼)에서 읽은 블록 수(빠름), "shared read"는 디스크에서 읽은 블록 수(느림)입니다. read가 많으면 I/O 병목을 나타냅니다. 캐시 히트율을 높이려면 shared_buffers 설정을 조정합니다.
Q5. 실행 계획에서 loops=500, actual rows=2, actual time=0.01..0.02일 때 이 노드의 실제 총 처리 시간은?
💡 EXPLAIN ANALYZE에서 actual time은 루프 1회 기준입니다. 실제 총 처리 시간은 actual time × loops입니다. 0.02ms × 500 = 10ms가 이 노드의 실제 총 처리 시간입니다. 중첩 루프(Nested Loop)에서 내부 노드가 여러 번 실행될 때 이 계산이 중요합니다.
🎉

퀴즈 통과!

점수: 0점 — 수고하셨습니다!

다음 강의로 →
😅

아쉽네요!

점수: 0점 — 70점 이상이 되어야 통과합니다.