채널톡 아이콘

현직 DBA 팀장의 MySQL 실행계획·인덱스 실전 — 백엔드 개발자를 위한 슬로우쿼리 클리닉

느린 쿼리 한 줄을 받았을 때 무엇을 보고, 무엇을 고치고, 어떻게 증명할까요? 주문 100만 건 가상 쇼핑몰을 내 컴퓨터 MySQL 8.0에 띄우고 EXPLAIN·EXPLAIN ANALYZE·인덱스 설계를 직접 실행하며 익히는 55강 실전 강의입니다.

1명 이 수강하고 있어요.

난이도 초급

수강기한 무제한

실행계획
실행계획
실습 중심
실습 중심
슬로우쿼리
슬로우쿼리
인덱스
인덱스
쿼리튜닝
쿼리튜닝
실행계획
실행계획
실습 중심
실습 중심
슬로우쿼리
슬로우쿼리
인덱스
인덱스
쿼리튜닝
쿼리튜닝

수강 후 이런걸 얻을 수 있어요

  • EXPLAIN의 type·key·rows·filtered·Extra와 EXPLAIN ANALYZE의 actual time·rows·loops를 스스로 읽습니다.

  • 슬로우로그와 performance_schema 다이제스트에서 먼저 고칠 쿼리를 고릅니다.

  • 복합 인덱스 순서·커버링·정렬·그룹핑을 전후 실측 숫자로 결정합니다.

  • 조인 순서·hash join·서브쿼리 변환(semijoin, 파생 테이블, 상관 서브쿼리)을 실행계획으로 설명합니다.

  • 고친 쿼리의 결과 동일성·쓰기 비용을 확인하고, 인비저블 인덱스로 안전하게 되돌리는 방법을 익힙니다.


이 강의는

느린 쿼리 한 줄을 받았을 때 무엇을 보고, 무엇을 고치고, 어떻게 증명할까요? 주문 100만 건 가상 쇼핑몰을 내 컴퓨터 MySQL 8.0에 띄우고 EXPLAIN·EXPLAIN ANALYZE·인덱스 설계를 직접 실행하며 익히는 55강 실전 강의입니다.

개념 정리보다 “증상(슬로우로그 한 줄) → 진단 → 수정 → 증명” 순서로, 현직 DB 플랫폼 팀이 운영에서 받는 유형의 사례를 가상 데이터로 재구성했습니다. 인덱스를 더했더니 오히려 느려진 실제 결과도 그대로 다룹니다.





이런 걸 배워요

  • EXPLAIN의 type·key·rows·filtered·Extra와 EXPLAIN ANALYZE의 actual time·rows·loops를 스스로 읽습니다.

  • 슬로우로그와 performance_schema 다이제스트에서 먼저 고칠 쿼리를 고릅니다.

  • 복합 인덱스 컬럼 순서·커버링·정렬·그룹핑을 전후 실측 숫자로 결정합니다.

  • 조인 순서·hash join·서브쿼리 변환(semijoin, 파생 테이블, 상관 서브쿼리)을 실행계획으로 설명합니다.

  • 고친 쿼리의 결과 동일성·쓰기 비용을 확인하고, 인비저블 인덱스로 안전하게 되돌리는 방법을 익힙니다.

이런 분께 추천해요

  • 쿼리는 쓰지만 실행계획을 읽어 본 적 없는 백엔드 개발자

  • 느린 쿼리 대응을 처음 맡은 주니어 개발자

  • SQLD를 준비하거나 딴 뒤 실무 튜닝을 시작하려는 분

선수 지식

  • SELECT·WHERE·JOIN·GROUP BY를 읽고 쓸 수 있음

  • Docker Desktop 설치와 터미널 기본 명령

다루지 않는 것

  • 락·데드락·격리수준(별도 강의 주제)

  • 서버 파라미터 튜닝·파티셔닝·샤딩

  • Aurora·클라우드 운영


커리큘럼 (3시간 57분)

섹션 1. 슬로우쿼리 한 줄에서 시작하기

  • 01강 강의 지도와 실습 환경 (4:53) · 미리보기

  • 02강 가상 쇼핑몰 데이터 살펴보기 (4:19)

  • 03강 슬로우로그 켜고 첫 기록 읽기 (4:14)

  • 04강 어제부터 주문 목록이 느려요 (4:38) · 미리보기

  • 05강 진단 4단계 (3:55)

섹션 2. EXPLAIN 읽는 법

  • 06강 EXPLAIN 열 지도 (4:01)

  • 07강 type 사다리 (4:07)

  • 08강 rows와 filtered (4:27)

  • 09강 Extra 읽기 (4:29)

  • 10강 FORMAT=TREE로 읽는 순서 (4:21)

섹션 3. EXPLAIN ANALYZE로 실측하기

  • 11강 EXPLAIN ANALYZE: 예상과 실제 (4:46)

  • 12강 actual time과 loops 곱하기 (4:14)

  • 13강 통계가 어긋날 때: 히스토그램 (3:57)

  • 14강 Handler 카운터로 읽은 행 세기 (3:41)

  • 15강 예상 984행, 실제 51,021행 (4:05)

섹션 4. 인덱스가 일하는 방식

  • 16강 클러스터드 기본 키 (3:46)

  • 17강 세컨더리 인덱스와 되찾기 비용 (3:54)

  • 18강 인덱스를 못 타는 조건 (4:01)

  • 19강 선택도: 같은 인덱스, 다른 선택 (3:47)

  • 20강 DATE() 하나로 풀스캔 (4:11) · 미리보기

섹션 5. 복합 인덱스 순서

  • 21강 등호 먼저, 범위 나중 (3:54)

  • 22강 key_len으로 쓰인 컬럼 읽기 (4:01)

  • 23강 선두 컬럼이 없을 때: skip scan (4:24)

  • 24강 순서 실험 4종 (4:23)

  • 25강 사례: 인덱스를 더했는데 느려졌다 (5:05)

섹션 6. 커버링 인덱스와 정렬

  • 26강 Using index의 의미 (4:19)

  • 27강 커버링으로 되찾기 없애기 (4:22)

  • 28강 ORDER BY와 filesort (4:12)

  • 29강 정렬 방향이 섞일 때 (4:04)

  • 30강 사례: OFFSET 지옥과 키셋 페이지네이션 (4:53)

섹션 7. GROUP BY·집계·LIMIT

  • 31강 Using temporary가 생기는 이유 (4:05)

  • 32강 인덱스로 그룹핑하기 (3:46)

  • 33강 COUNT(*)의 비용 (4:20)

  • 34강 LIMIT가 일찍 끝날 때 (4:05)

  • 35강 대시보드 집계가 느려요 (4:49)

섹션 8. 조인 실행계획

  • 36강 드라이빙 테이블과 Nested Loop (4:37)

  • 37강 조인 컬럼 인덱스 유무 (4:23)

  • 38강 hash join이 나오는 조건 (4:58)

  • 39강 조인 순서와 STRAIGHT_JOIN (4:40)

  • 40강 사례: 3중 조인 1.26초 (4:55)

섹션 9. 서브쿼리·IN·EXISTS

  • 41강 IN 서브쿼리와 semijoin (4:42)

  • 42강 IN·EXISTS·JOIN 비교 (4:26)

  • 43강 파생 테이블: merge와 구체화 (4:31)

  • 44강 상관 서브쿼리와 loops (4:35)

  • 45강 회원별 최근 주문 1건 (4:53)

섹션 10. 슬로우쿼리를 고르고 증명하기

  • 46강 상위 쿼리 고르기 (4:22)

  • 47강 총 시간 vs 1회 시간 (4:10)

  • 48강 결과 동일성 검증 (4:06)

  • 49강 인덱스 추가의 비용 (3:55)

  • 50강 인비저블 인덱스와 힌트 (4:16)

섹션 11. 종합 실습

  • 51강 처음 보는 슬로우로그 진단 (4:01)

  • 52강 사례 A: 회원 검색 화면 (4:02)

  • 53강 사례 B: 정산 배치 (4:27)

  • 54강 사례 C: 관리자 주문 목록 (4:18)

  • 55강 리뷰 체크리스트와 다음 공부 (3:57)


강사 소개

20년 이상 데이터베이스와 IT 분야에서 경력을 쌓아온 주경호입니다. DBA 및 DB Platform 팀 매니저로 데이터베이스 플랫폼을 다루며, MySQL·PostgreSQL·Oracle·MongoDB와 SQL 튜닝, AWS·Terraform·Python을 전문 분야로 삼고 있습니다.

DB 플랫폼 팀에서 매일 슬로우쿼리를 진단하고 개발 팀에 튜닝 방향을 안내해 왔습니다. 이번 강의에서는 그 진단 순서를 개발자가 혼자서도 따라 할 수 있도록, 교육용 가상 쇼핑몰 데이터와 실제 실행 출력만으로 재구성했습니다. 회사 운영 데이터는 쓰지 않았습니다.

자주 묻는 질문

Q. MySQL을 처음 쓰는데 들을 수 있나요?
A. SELECT·JOIN·GROUP BY를 읽을 수 있으면 됩니다. 실행계획은 처음부터 설명합니다.

Q. 실습 환경은 어떻게 준비하나요?
A. Docker Desktop을 설치하고 실습 ZIP의 lab 폴더에서 docker compose up -d를 실행하면 MySQL 8.0과 가상 쇼핑몰 데이터가 1~3분 안에 만들어집니다.

Q. 강의 화면 숫자와 제 결과가 다릅니다.
A. 시간(ms·초)은 컴퓨터마다 다릅니다. 행 수(rows, Rows_examined, Handler_read_*)와 실행계획 모양, 전후 대소 관계를 비교하세요. 옵티마이저 통계 예상치도 조금 다를 수 있습니다.

Q. Aurora MySQL·RDS에도 그대로 쓰나요?
A. 실행계획 읽기와 인덱스 설계 원리는 같습니다. 강의 실습은 로컬 MySQL 8.0.46 에서 측정했습니다.

Q. Windows 에서도 되나요?
A. Docker Desktop이 동작하면 같은 명령으로 실행됩니다. 제작은 macOS 에서 검증했고 Windows는 직접 검증하지 않았습니다.

Q. 락·데드락도 다루나요?
A. 이 강의는 실행계획·인덱스·슬로우쿼리에 집중합니다. 락·데드락은 별도 강의 주제입니다.

Q. 내레이션은 사람 목소리인가요?
A. AI 합성 음성입니다. 화면의 SQL·실행 결과·실행계획은 실습 DB에서 실제로 실행한 출력입니다.

영상 내레이션은 AI 합성 음성입니다. 화면의 SQL 결과·실행계획은 실습 DB에서 실제로 실행한 출력입니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 쿼리는 쓰지만 실행계획을 읽어 본 적 없는 백엔드 개발자

  • 느린 쿼리 대응을 처음 맡은 주니어 개발자

  • SQLD를 준비하거나 딴 뒤 실무 튜닝을 시작하려는 분

선수 지식,
필요할까요?

  • SELECT·WHERE·JOIN·GROUP BY를 읽고 쓸 수 있음

  • Docker Desktop 설치와 터미널 기본 명령

안녕하세요
데이터장인입니다.

커리어인증

20년 이상 데이터베이스와 IT 분야에서 경력을 쌓아온 데이터장인입니다. DBA 및 DB Platform 팀 매니저로 데이터베이스 플랫폼을 다루며, MySQL·PostgreSQL·Oracle·MongoDB와 SQL 튜닝, AWS·Terraform·Python을 전문 분야로 삼고 있습니다. 게임·금융·IT 서비스 분야의 경력을 바탕으로 데이터베이스와 클라우드 아키텍처를 설명합니다. 『오라클 실무튜닝 SQL 패턴 학습』과 『Oracle Pro*C 실무프로젝트 활용서』를 출간했으며, AWS Summit 2018·2019와 데이터야 놀자 2020에서 서버리스·데이터베이스 선택·멀티데이터베이스 전략을 발표했습니다. 최근에는 Bedrock LLM을 이용한 슬로우 쿼리 분석·튜닝 권고, DB 스펙 산정 자동화, DB 메타 MCP 서버와 Slack 봇을 통한 조회 흐름을 다루고 있습니다. 개발자를 위한 데이터베이스 자동화와 비개발자를 위한 AI 업무 활용을 각 과정의 대상과 목적에 맞는 실습으로 설명합니다. AI 제안을 그대로 적용하기보다 결과 동일성·실행 계획·관측 조건을 확인하고, 근거가 부족하면 보류하는 판단 기준을 전달합니다. 회사 운영 데이터와 인증값은 강의 자료에 포함하지 않습니다.

더보기

커리큘럼

전체

55개 ∙ (3시간 56분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!

데이터장인님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

얼리버드 할인 중

월 ₩15,840

5개월 할부 시

20%

₩99,000

₩79,200

평생교육이용권 지원 강의