강의

멘토링

로드맵

자바 ORM 표준 JPA 프로그래밍 - 기본편

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다.

(5.0) 수강평 2,133개

수강생 25,417명

난이도 초급

수강기한 무제한

새소식 목록
관리작성

김영한의 실전 데이터베이스 성능 최적화 강의 오픈

안녕하세요. 여러분

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

오픈 기념으로 데이터베이스 로드맵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 튜닝 기술을 외우는 과정이 아닙니다.

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

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

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

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

감사합니다.

댓글