2025.08.20 ~ 2025.09.04
MySQL 핵심 동작 원리(스토리지 엔진, 트랜잭션, 인덱스, 옵티마이저, 실행계획 등) 심화 이해
발표를 통해 각자 학습 내용을 정리 및 공유
- 매주 2~3개 챕터를 읽고 발표
- 발표자는 발표자료/정리본 작성
- 질의응답 및 토론
- 주요 개념
-
MySQL 엔진 (머리)
1-1. 커넥션 핸들러: 클라이언트 연결 관리, 인증 처리
1-2. SQL 파서 & 전처리기: SQL 문법 검증, 구문 트리 생성
1-3. 옵티마이저: 여러 실행 경로 중 최적의 실행계획 선택 (비용 기반 최적화)
1-4. 쿼리 실행기: 옵티마이저가 만든 계획을 실제 실행 -
스토리지 엔진 (손발)
2-1. 데이터를 실제로 디스크에 읽고 쓰는 모듈
2-2. MyISAM, InnoDB, Memory 등 플러그인 구조로 확장 가능
2-3. InnoDB는 트랜잭션, MVCC, 외래키 지원 / MyISAM은 단순 구조, 빠른 읽기 -
플러그인 아키텍처
3-1. 인증, 스토리지 엔진, UDF 등 모듈형 확장 지원
3-2. 다른 DBMS와 차별화되는 MySQL의 가장 큰 특징 -
버퍼 풀 & 캐시 계층
4-1. InnoDB 버퍼 풀: 데이터/인덱스를 메모리에 캐싱
4-2. 쿼리 캐시(8.0부터 제거): 캐시 일관성 문제로 폐지됨
- 핵심 토론
-
Community 버전에는 Thread Pool이 없는데, 동접 폭주 상황에서 어떻게 대응할 수 있을까?
(→ ProxySQL, 애플리케이션 커넥션 풀, Scale-out 등으로 보완) -
MySQL이 “스토리지 엔진 플러그인 구조”를 채택한 이유는 무엇일까?
(→ 다양한 워크로드에 맞춰 최적 엔진을 선택 가능, 범용 DBMS로 확장성 확보) -
InnoDB가 디폴트가 된 지금, MyISAM 같은 엔진을 여전히 고려할 필요가 있을까?
- 발표자: 성준, 상수
- 주요 개념: ACID, MVCC, Isolation Level
- 핵심 토론: Undo/Redo Log 관리와 성능 Trade-off
- 발표자: 성준, 상수
- 주요 개념
- InnoDB 페이지 압축 vs 테이블 압축
- 압축 알고리즘 (zlib, LZ4)과 디스크 공간 절약 효과
- 압축이 성능에 미치는 영향 (읽기 성능 ↑ / 쓰기 성능 ↓ 가능)
- 핵심 토론
- OLTP 환경에서 압축을 적용할 경우 TPS 저하 vs 저장공간 절약의 트레이드오프
- SSD 기반 스토리지에서 압축이 여전히 의미가 있는가?
- 발표자: 성준, 상수
- 주요 개념
- MySQL Keyring 플러그인: keyring_file, keyring_okv, keyring_encrypted_file
- 테이블스페이스 암호화, Redo/Undo 로그 암호화, 바이너리 로그 암호화
- TDE (Transparent Data Encryption) 개념
- 핵심 토론
- DB 자체 암호화 vs 애플리케이션 레벨 암호화
- GDPR/개인정보보호법 대응 시 어디까지 DB 암호화가 필요할까?
발표자: 성준, 상수
- 주요 개념
- B-Tree 인덱스, 클러스터링 인덱스, 보조 인덱스 구조
- 커버링 인덱스, 루스 인덱스 스캔, MRR/Index Condition Pushdown
- 인덱스 설계 원칙: 카디널리티, 선택도, 조합 인덱스
- 핵심 토론
- 실무에서 LIKE '%keyword' 검색 → 인덱스 미활용 문제
- Elasticsearch vs MySQL 인덱스 활용 비교
- MogoDB, PostgreSQL 와 비교 및 각 장단점 및 특징 정리
- 발표자: 성준, 상수
- 주요 개념
- 옵티마이저가 실행계획을 선택하는 방식
- 통계 정보와 비용 기반 최적화
- 옵티마이저 힌트 (USE INDEX, STRAIGHT_JOIN, SQL_CALC_FOUND_ROWS)
- 핵심 토론
- 옵티마이저가 비효율적인 실행계획을 선택할 때 어떻게 개입할 것인가?
- 힌트 남용 시 유지보수 문제
- 발표자: 성준, 상수
- 주요 개념
- EXPLAIN 출력 해석: type, key, rows, filtered
- EXPLAIN FORMAT=JSON 과 옵티마이저 Trace
- 실행계획 캐시 및 Reuse
- 핵심 토론
- EXPLAIN만으로 튜닝 판단 가능할까?
- 대규모 쿼리 튜닝 시 실측 모니터링 (performance_schema, sys 스키마) 필요성
- 발표자: 성준, 상수
💡 전체 인사이트
-
단순 기능 습득이 아니라 성능/안정성/확장성 관점으로 이해가 깊어짐
-
실제 프로젝트 설계/운영 시 적용할 포인트 도출