백엔드 시니어 개발자를 위한 체험형 MySQL 성능 최적화 학습 프로젝트
실제 대용량 데이터 환경에서 MySQL 성능 문제를 체험하고, 단계적으로 최적화 기법을 익혀 실무에서 바로 적용할 수 있는 능력을 기른다.
- 점진적 성능 개선: 느린 상황부터 시작해서 단계적으로 최적화
- Before/After 비교: 모든 최적화 기법의 정량적 성능 측정
- 실무 시나리오: 실제 서비스에서 발생하는 문제 상황 재현
- 고급 운영 기법: 백엔드 시니어가 알아야 할 MySQL 운영 노하우
- 기본 학습: 100만 건 (빠른 테스트용)
- 실전 체험: 500만 건 (실무 수준)
- 심화 학습: 1,000만 건 (대용량 처리)
- Docker MySQL 8.0 환경 구축
- InnoDB 엔진 파라미터 최적화
- 문자셋/콜레이션 성능 영향 분석
- 커넥션 풀 & 메모리 튜닝
- ✅ 3NF 정규화 vs 반정규화 완전한 성능 비교
- ✅ 현실적 패턴의 대용량 테스트 데이터 생성 (100만~1000만 건)
- ✅ 복잡한 JOIN 성능 문제 체험 및 해결
- ✅ 집계 테이블, 트리거, 계산된 컬럼 활용 전략
- ✅ 자동화된 성능 분석 및 리포트 생성
- ✅ "느린 상황" 슬로우 쿼리 체험 (32가지 패턴, 자동 분석)
- ✅ 다양한 인덱스 유형별 성능 비교 (단일/복합/커버링/함수형)
- ✅ EXPLAIN 실행계획 분석 및 시각화 도구 (자동 채점 & 최적화 제안)
- ✅ 고급 인덱싱 기법 (JSON 인덱스, 인덱스 힌트, 조건부 인덱스)
- ✅ 종합 성능 분석 리포트 및 실무 적용 가이드
- ✅ 윈도우 함수 최적화 (ROW_NUMBER, RANK, LAG/LEAD, 집계 함수)
- ✅ 서브쿼리 vs JOIN 성능 비교 (EXISTS, IN, 상관 서브쿼리)
- ✅ 통계 정보 관리 및 옵티마이저 힌트 활용
- ✅ 옵티마이저 추적을 통한 내부 동작 분석
- ✅ 통합 실행 도구 및 종합 가이드 제공
- ✅ 트랜잭션 격리 수준별 락 동작 체험 (READ UNCOMMITTED ~ SERIALIZABLE)
- ✅ 데드락 의도적 발생 및 자동 복구 메커니즘 분석
- ✅ Gap Lock & Next-Key Lock 심화 분석 및 시각화
- ✅ 애플리케이션 레벨 동시성 제어 (낙관적/비관적 락, 세마포어)
- ✅ RANGE/LIST/HASH/KEY 파티셔닝 전략 및 성능 비교
- ✅ 배치 처리 최적화 (LOAD DATA, bulk insert, 청크 처리)
- ✅ 임시 테이블 vs 메모리 테이블 사용 전략
- ✅ 프로시저 vs 애플리케이션 로직 성능 비교 분석
- 마스터-슬레이브 복제
- 샤딩 전략 설계
- 읽기 전용 복제본 활용
- 캐시 계층 연동
- 논리적/물리적 백업
- 바이너리 로그 관리
- 포인트-인-타임 복구
- 디스크 I/O 최적화
- Performance Schema 활용
- 실시간 모니터링 대시보드
- 성능 지표 알림 설정
- 장애 대응 자동화
- 전자상거래 시뮬레이션
- 대용량 트래픽 부하 테스트
- 장애 시나리오 재현
- 성능 최적화 종합 리포트
mysql-performance-master/
├── README.md # 프로젝트 개요 및 가이드
├── docker/ # Docker 환경 설정
│ ├── docker-compose.yml
│ └── mysql/
├── config/ # MySQL 설정 파일
│ ├── my.cnf
│ └── optimization-configs/
├── schemas/ # 데이터베이스 스키마
│ ├── normalized/
│ ├── denormalized/
│ └── partitioned/
├── scripts/ # 데이터 생성 및 테스트
│ ├── data-generation/
│ ├── performance-testing/
│ └── monitoring/
├── examples/ # 실습 예제
│ ├── indexing/
│ ├── normalization/
│ ├── concurrency/
│ └── partitioning/
├── docs/ # 단계별 학습 가이드
│ ├── phase-01/ ~ phase-11/
│ └── troubleshooting/
├── monitoring/ # 모니터링 도구
│ ├── dashboards/
│ └── alerts/
└── performance-tests/ # 성능 테스트 결과
├── benchmarks/
└── reports/
# 1. 프로젝트 클론/다운로드
cd mysql-performance-master
# 2. Docker MySQL 환경 시작
cd docker && docker-compose up -d
# 3. MySQL 연결 확인
mysql -h 127.0.0.1 -P 3306 -u root -p# Phase 1 가이드 확인
cat docs/phase-01/README.md
# 기본 테이블 생성
mysql -h 127.0.0.1 -P 3306 -u root -p < schemas/normalized/01-create-tables.sql
# 테스트 데이터 생성 (100만 건)
python scripts/data-generation/generate_users.py --count 1000000모든 최적화 과정에서 정량적 성능 측정을 위한 도구들:
- 쿼리 실행 시간 측정: 마이크로초 단위 정확한 측정
- EXPLAIN 분석: 실행 계획 자동 분석
- 슬로우 쿼리 로그: 자동 파싱 및 리포트 생성
- 리소스 사용량: CPU, 메모리, I/O 모니터링
- 동시성 테스트: 멀티 스레드 부하 테스트
각 Phase 완료 시 생성되는 결과물:
- ✅ 성능 측정 리포트 (Before/After 비교)
- ✅ 최적화 적용 과정 문서
- ✅ 실무 적용 체크리스트
- ✅ 장애 대응 플레이북
학습 과정에서 발견한 개선사항이나 추가 시나리오 제안은 언제든 환영합니다!
Ready to become a MySQL Performance Master?
Phase 1부터 차근차근 시작해보세요! 👉 Phase 1 가이드