채널톡 아이콘

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

"개발할 때는 잘 되던 쿼리가, 데이터가 쌓이니 갑자기 느려집니다." 이때 감이 아니라 근거로 원인을 찾아 30초 걸리던 쿼리를 0.1초로 만드는 것이 실무에서 인정받는 개발자의 실력입니다. 실행 계획, 인덱스, 옵티마이저, 조인과 정렬까지 수백만 건의 실전 데이터로 성능의 핵심 원리를 완성하고, 운영 환경의 느린 쿼리를 스스로 분석하고 해결하는 한 단계 높은 개발자로 성장하세요.

(5.0) 수강평 31개

수강생 1,924명

난이도 중급이상

수강기한 무제한

데이터베이스
데이터베이스
sql
sql
mysql
mysql
sql튜닝
sql튜닝
데이터베이스
데이터베이스
sql
sql
mysql
mysql
sql튜닝
sql튜닝

새소식

2 개

  • 김영한님의 프로필 이미지

    안녕하세요. 김영한입니다.

    드디어 7년전 처음 목표로 했던 백엔드 개발자 전체 로드맵이 완성되었습니다.

    전체 로드맵 완성과 백엔드 마스터 패스를 다시 열어달라는 많은 분들의 요청에 따라 김영한의 백엔드 마스터 패스를 기간 한정으로 소개합니다.

    링크: https://inf.run/uixFt


    오늘 출시한 「김영한의 실전 데이터베이스 - 성능 최적화」 강의를 마지막으로, 실전 자바부터 스프링, JPA, 데이터베이스 설계와 성능 최적화까지 이어지는 모든 로드맵을 완성했습니다.

    첫 강의를 시작한 뒤 여기까지 오는 데 7년이 걸렸습니다.

    저와 함께 긴 시간 동안 함께해 주신 여러분께 진심으로 감사드립니다.


    7년의 대장정, 그리고 완성

    처음 강의를 시작할 때 한 가지 목표가 있었습니다.

    실무에서 만난 수많은 신입, 주니어, 시니어 개발자분들을 떠올리며, 개발자가 제대로 성장하는 데 필요한 모든 실전 기술을 하나의 큰 로드맵으로 완성하겠다는 목표였습니다.

    단순히 특정 기술 하나를 설명하는 데 그치지 않고,

    • 자바와 객체지향의 기본기

    • 스프링의 핵심 원리

    • 스프링 부트와 JPA를 활용한 실무 개발

    • 데이터베이스 설계

    • 대용량 데이터와 성능 최적화

    까지 백엔드 개발자가 성장하면서 반드시 만나게 되는 주제들을 빠짐없이 담고 싶었습니다.

    신입에서 주니어로, 주니어에서 시니어로 성장하기까지 필요한 전체 과정을 제대로 만들어보겠다는 목표였습니다.

    그리고 7년이 지난 지금, 데이터베이스 성능 최적화 강의를 끝으로 처음 생각했던 전체 로드맵이 마침내 완성되었습니다.

    돌아보면 참 긴 여정이었습니다.

    강의를 만들면서 수없이 다시 촬영하고, 더 좋은 설명을 고민하고, 실무에 꼭 필요한 내용만 담기 위해 수 없이 고민하고 검증했습니다.


    솔직히 살면서 무언가를 이렇게 오래 유지한다는 것은 쉬운 일이 아닙니다. 저 역시 수없이 슬럼프에 빠지고, 순간순간 지치고 힘든 시간을 겪었습니다. 회사에서 정신없이 일하고 돌아와서 녹초가 된 상태로 저녁 늦게 강의를 찍던 날들도 많았습니다.

    생각해보면 그런 순간마다 저를 다시 일으켜 세운 것은 여러분이 남겨주신 작은 수강평 하나하나였습니다. 강의를 들어주시고, 응원해 주시고, 또 열심히 공부해서 본인이 원하던 회사로 이직한 성장의 이야기를 전해주신 그 모든 메시지들이 저에게는 정말 큰 힘이 되었습니다. 그렇게 쌓인 작은 응원들이 결국 이 긴 여정을 끝까지 이어올 수 있게 해준 가장 큰 이유였습니다. 수강평 하나하나를 볼 때 마다, 또 지나가면서 저를 알아보시고 반갑게 건내주시는 작은 인사 하나가 제가 하는 일이 그래도 누군가에게는 도움이 되는 일이구나 생각하며 힘을 얻게 되었습니다.

    돌이켜보면 이 모든 과정은 결코 혼자 만든 시간이 아니었습니다. 여러분과 함께 만들어온 시간이었고, 함께 완성해온 여정이었습니다.

    진심으로 감사드립니다.


    백엔드 마스터 패스 기간 한정 출시

    전체 로드맵 완성과 백엔드 마스터 패스를 다시 열어달라는 많은 분들의 요청에 따라 김영한의 백엔드 마스터 패스를 기간 한정으로 소개합니다.

    링크: https://inf.run/uixFt

    이번 마스터 패스는 백엔드 개발자의 기초부터 실무, 그리고 시니어 개발자가 고민해야 하는 설계와 성능 최적화까지 모두 이어지는 전체 로드맵입니다.


    패스 상품 구성 — 4개의 핵심 로드맵 통합

    백엔드 마스터 패스에는 다음 4개의 전체 로드맵이 포함됩니다.

    • 김영한의 실전 자바 로드맵

    • 김영한의 스프링 완전 정복 로드맵

    • 김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵

    • 김영한의 실전 데이터베이스 로드맵

    자바의 기본 문법과 객체지향부터 시작해서 스프링, JPA, 데이터베이스 설계와 성능 최적화까지 하나의 흐름으로 학습할 수 있습니다.

    특히 이번에는 마지막 퍼즐이었던 「김영한의 실전 데이터베이스 - 성능 최적화」 강의까지 정식으로 포함되면서 백엔드 마스터 전체 로드맵이 완성되었습니다.


    마지막 퍼즐, 데이터베이스 성능 최적화

    서비스가 성장하고 데이터가 쌓이기 시작하면 결국 데이터베이스 성능 문제를 만나게 됩니다.

    개발할 때는 잘 동작하던 쿼리가 운영 환경에서 갑자기 느려지고, 단순한 조회 하나가 서비스 전체의 병목이나 장애로 이어지기도 합니다.

    이때 필요한 것은 단순히 인덱스를 몇 개 추가하는 요령이 아닙니다.

    데이터베이스가 데이터를 어떻게 저장하고 조회하는지, 실행 계획을 어떻게 분석해야 하는지, 옵티마이저가 왜 특정 인덱스와 조인 순서를 선택했는지 이해해야 합니다.

    이번 성능 최적화 강의에서는 다음 내용을 다룹니다.

    • EXPLAIN과 EXPLAIN ANALYZE를 통한 실행 계획 분석

    • B+Tree와 인덱스 내부 구조

    • 클러스터드 인덱스와 세컨더리 인덱스

    • 복합 인덱스 설계 원리

    • Using filesort 진단과 최적화

    • ICP, 커버링 인덱스, 스킵 스캔

    • 옵티마이저와 히스토그램

    • 조인과 랜덤 액세스 최적화

    • 정렬, 페이징, 그룹핑 성능 개선

    • 사전 집계 테이블을 활용한 대용량 통계 처리

    이제 애플리케이션을 제대로 만드는 방법을 넘어, 서비스가 성장했을 때 발생하는 성능 문제까지 직접 분석하고 해결할 수 있는 전체 과정이 완성되었습니다.


    AI 시대, 왜 전체 로드맵이 필요한가

    AI가 코드를 작성해주는 시대가 되면서 개발자의 기본기는 오히려 더 중요해지고 있습니다.

    AI는 개발자의 능력을 대체하는 도구가 아니라 증폭하는 도구입니다.

    기본기가 탄탄한 개발자는 AI에게 더 좋은 질문을 할 수 있고, AI가 만든 결과가 올바른지 검증할 수 있습니다.

    반대로 기본기가 부족하면 코드가 겉으로 동작하더라도 다음과 같은 문제를 발견하기 어렵습니다.

    • 객체지향 설계가 무너진 코드

    • 유지보수가 어려운 구조

    • 잘못된 트랜잭션 처리

    • 비효율적인 데이터 접근

    • 운영 환경에서 장애를 일으키는 쿼리

    • 데이터가 증가할수록 느려지는 설계

    AI 기술과 도구는 계속 변하겠지만, 좋은 코드와 나쁜 코드를 구분하는 눈, 객체지향의 원리, HTTP와 웹의 동작 방식, 트랜잭션, 데이터베이스 설계와 성능 최적화 같은 기본기는 변하지 않습니다.

    알아야 질문할 수 있고, 알아야 검증할 수 있으며, 알아야 더 나은 결과로 개선할 수 있습니다.

    이번 백엔드 마스터 패스에는 바로 그 변하지 않는 본질을 담았습니다.


    지속적인 강의 리뉴얼

    전체 로드맵은 완성되었지만 강의 제작이 끝난 것은 아닙니다.

    앞으로도 기술 변화와 실무 환경에 맞춰 기존 강의를 지속적으로 리뉴얼할 예정입니다.

    필요에 따라 전체 영상 리뉴얼, 부분 영상 리뉴얼, 매뉴얼과 예제 프로젝트 업데이트 등을 진행하겠습니다.

    마스터 패스를 구매하신 분들은 이후 강의가 리뉴얼되거나 가격이 변경되더라도 추가 비용 없이 업데이트된 내용을 계속 학습할 수 있습니다.

    저를 믿고 선택해 주신 분들에 대한 최소한의 예의이자 약속입니다.


    마지막으로

    이 패스는 단순히 여러 강의를 묶은 상품이 아닙니다.

    제가 오랜 시간 실무에서 배우고, 실패하고, 고민했던 내용을 하나의 성장 과정으로 정리한 결과물입니다.

    여러분이 신입을 넘어 주니어로, 주니어를 넘어 시니어로 성장하고, 결국 주변 동료들이 진심으로 함께 일하고 싶어 하는 개발자가 되는 그날까지 든든한 가이드가 되어드리겠습니다.

    감사합니다.

    13
  • 김영한님의 프로필 이미지

    안녕하세요. 여러분

    김영한의 실전 데이터베이스 성능 최적화 강의가 드디어 오픈했습니다.

    오픈 기념으로 데이터베이스 로드맵30% 할인하고 있습니다 🙂

    제목: 김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

    강의 수: 104개

    강의 시간: 21시간 10분

    링크: https://inf.run/Gcg6N


    그리고 데이터베이스 로드맵을 포함한 백엔드 로드맵의 전체 강의 완료 기념으로 김영한의 백엔드 마스터 패스를 기간 한정으로 소개합니다.

    마스터 패스 링크: https://inf.run/uixFt


    <강의 특징>

    이번 강의의 가장 중요한 특징은 실무에 가까운 실제 수백만~천만 건의 데이터를 데이터베이스에 저장한 다음에 저와 함께 하나씩 튜닝해나가는 것입니다. 그래서 수 초씩 걸리던 쿼리를 0.01초 단위의 극한으로 최적화하는 실전 방법을 배우는 것입니다.


    <강의 내용>

    개발할 때는 잘 동작하던 쿼리가 데이터가 쌓이면서 갑자기 느려지는 경우가 있습니다.

    처음에는 0.1초 만에 실행되던 쿼리가 어느 순간 1초, 10초를 넘어가고, 심한 경우 서비스 장애로 이어지기도 합니다.

    이런 상황에서 우리는 다음과 같은 고민을 하게 됩니다.

    • 쿼리가 느린 원인을 어디서부터 찾아야 할까?

    • 실행 계획에 나오는 수많은 항목은 무엇을 의미할까?

    • 인덱스를 만들었는데 왜 사용하지 않을까?

    • 복합 인덱스는 어떤 순서로 설계해야 할까?

    • 인덱스가 많을수록 성능이 좋아질까?

    • Using filesort는 왜 발생하고, 어떻게 제거해야 할까?

    • 페이징 뒤쪽으로 갈수록 쿼리가 느려지는 이유는 무엇일까?

    • 조인 순서는 누가 결정하고, 어떻게 최적화할 수 있을까?

    • 옵티마이저는 왜 예상과 다른 실행 계획을 선택할까?

    데이터베이스 성능 문제는 단순히 SQL 문법을 잘 안다고 해결할 수 있는 문제가 아닙니다.

    데이터베이스가 데이터를 어떻게 저장하고, 인덱스를 어떻게 탐색하며, 옵티마이저가 어떤 기준으로 실행 계획을 선택하는지 이해해야 합니다.

    이 강의는 느린 쿼리를 감으로 수정하는 것이 아니라, 실행 계획과 실제 측정 결과를 근거로 원인을 찾고 해결하는 방법을 다룹니다.

    먼저 MySQL과 InnoDB의 내부 구조를 이해하고, EXPLAIN과 EXPLAIN ANALYZE를 통해 쿼리가 실제로 어떻게 실행되는지 분석합니다.

    이후 수백만 건의 실전 데이터를 사용해서 직접 성능 문제를 만들고 해결합니다.

    • 풀 테이블 스캔을 인덱스 탐색으로 개선

    • 복합 인덱스의 컬럼 순서 결정

    • B+Tree와 인덱스 내부 동작 이해

    • 클러스터드 인덱스와 세컨더리 인덱스 분석

    • Using filesort의 원인 진단과 조기 종료

    • ICP와 커버링 인덱스를 활용한 성능 개선

    • 인덱스 스킵 스캔, 인덱스 머지, MRR 분석

    • 옵티마이저와 히스토그램 활용

    • 조인 순서와 랜덤 액세스 최적화

    • 정렬, 페이징, 그룹핑 성능 개선

    • 스트리밍 집계와 사전 집계 테이블 설계

    단순히 “여기에 인덱스를 추가하세요”라고 결론만 전달하지 않습니다.

    왜 그 인덱스가 필요한지, 데이터베이스 내부에서는 어떤 일이 일어나는지, 실행 계획과 실제 실행 시간은 어떻게 달라지는지를 단계적으로 확인합니다.

    또한 특정 쿼리 하나만 빠르게 만드는 방법을 넘어, 실무에서 계속해서 새로운 성능 문제를 분석하고 해결할 수 있는 기본 원리를 깊이 있게 다룹니다.


    <이 강의를 통해 얻게 되는 것>

    1. 실행 계획을 읽는 능력

    EXPLAIN과 EXPLAIN ANALYZE의 핵심 항목을 이해하고, 느린 쿼리의 원인을 실행 계획에서 찾아낼 수 있습니다.

    2. 인덱스를 직접 설계하는 능력

    단순히 컬럼 하나에 인덱스를 추가하는 수준을 넘어, 데이터 분포와 쿼리 조건에 맞는 복합 인덱스를 설계할 수 있습니다.

    3. 데이터베이스 내부 동작에 대한 이해

    B+Tree, 클러스터드 인덱스, 세컨더리 인덱스, 랜덤 액세스 등 인덱스 내부의 핵심 원리를 이해하게 됩니다.

    4. 실전 성능 최적화 경험

    수백만 건의 데이터를 사용해 느린 쿼리를 직접 분석하고, 수십 배에서 수백 배까지 개선하는 과정을 경험합니다.

    5. 운영 환경의 문제를 해결하는 기준

    인덱스의 장점뿐 아니라 쓰기 성능, 저장 공간, 운영 비용까지 고려해 상황에 맞는 최선의 방법을 선택할 수 있습니다.


    <전체 학습 목차>

    1. 강의 소개와 수업 자료

    2. 실습 환경 구성

    3. 데이터베이스 성능과 MySQL 아키텍처

    4. 실행 계획 1 - EXPLAIN 완전 정복

    5. 실행 계획 2 - ANALYZE 완전 정복

    6. 실전 튜닝 1 - 풀 테이블 스캔 진단과 복합 인덱스 기초

    7. 인덱스 내부 구조 1 - B+Tree

    8. 인덱스 내부 구조 2 - 클러스터드, 세컨더리 인덱스

    9. 실전 튜닝 2 - Using filesort 진단과 조기 종료

    10. 인덱스 심화 1 - ICP, 커버링, 스킵 스캔

    11. 인덱스 심화 2 - 머지, MRR, 신기능, 힌트, 운영

    12. 옵티마이저와 히스토그램

    13. 조인 최적화

    14. 실전 튜닝 3 - 조인 랜덤 액세스 진단과 커버링 인덱스

    15. 정렬, 페이징, 그룹핑 최적화

    16. 실전 튜닝 4 - 스트리밍 집계와 사전 집계 테이블

    17. 다음으로

    데이터베이스 성능 최적화는 단순히 몇 가지 SQL 튜닝 기술을 외우는 과정이 아닙니다.

    데이터가 어떤 경로로 조회되는지 이해하고, 실행 계획을 근거로 병목을 찾아내며, 여러 선택지 사이에서 가장 적절한 해결책을 결정하는 과정입니다.

    이 강의를 통해 느린 쿼리를 만났을 때 막연하게 인덱스부터 추가하는 것이 아니라, 원인을 정확히 분석하고 스스로 해결할 수 있는 개발자로 성장하셨으면 합니다.

    제가 실무에서 수많은 성능 문제를 해결하며 쌓아온 경험과 오랜 고민의 결과를 이번 강의에 담았습니다.

    여러분의 성장에 도움이 되었으면 합니다.

    감사합니다.

    0

월 ₩30,800

5개월 할부 시

₩154,000

평생교육이용권 지원 강의