← 기술 목록으로
DB 인덱스 최적화 & 용량 53% 절감
수년간 운영되며 비대해진 마스터 DB를, 실사용 쿼리 분석 기반으로 불필요 인덱스를 걷어내고 SQL을 튜닝해 용량과 성능을 동시에 개선
기간2025
소속래브라도랩스(LabradorLabs) · 데이터파트
역할데이터 엔지니어 · 인덱스 진단 및 최적화 주도
MySQLEXPLAINIndex TuningSQL OptimizationQuery Analysis
1배경
수년간 운영되어 온 마스터 DB는 그동안 누적된 미사용 인덱스와 비효율 쿼리로 인해 저장 용량이 비대해지고 전반적인 성능이 저하된 상태였습니다.
- 인덱스는 한 번 만들면 계속 쌓이기만 할 뿐, 정말 쓰이는지 검증된 적이 없었음
- 불필요한 인덱스는 저장 공간 낭비와 함께 쓰기 성능·DB 초기 구성 시간에 부담을 가중
- 감(感)이 아니라 실제 사용 데이터에 근거한 정리 기준이 필요
2접근
① 수집실제 사용 쿼리 95개 확보
→
② 분석EXPLAIN으로 인덱스 사용 여부 검증
→
③ 정리불필요 인덱스 삭제·복합 인덱스 재구성
→
④ 튜닝쿼리 재작성으로 인덱스 활용 극대화
- 실제 사용되는 쿼리 95개를
EXPLAIN으로 분석해, 전체 인덱스 311개 중 224개(72%)가 실행 계획에서 전혀 쓰이지 않음을 정량적으로 증명
- 불필요 인덱스를 삭제하고, 복합 인덱스의 컬럼 순서를 실제 실행 계획에 맞게 재구성
- SQL 튜닝:
OR 조건을 UNION으로 전환하고, LIKE 와일드카드 패턴을 인덱스가 타도록 최적화
핵심은 "인덱스를 줄인 것"이 아니라, 추측 대신 실측 실행 계획을 근거로 의사결정한 것입니다.
3임팩트
DB 용량 53.8% 절감 — 2.6TB → 1.2TB
초기 설치 시간 절반 — DB 생성 12시간 → 6시간
비용 절감 — 저장 자원 축소로 운영 비용에 직접 기여
서비스 품질 향상 — 쿼리 효율 개선으로 응답 성능 개선
4역할
데이터 엔지니어로서 쿼리 수집 → 실행 계획 분석 → 인덱스 정리 → SQL 튜닝의 전 과정을 주도했습니다. 운영 중인 마스터 DB를 다루는 만큼, 실제 사용 패턴을 근거로 안전하게 변경 범위를 좁혀가며 진행했습니다.
결과적으로 용량·비용·성능을 동시에 개선하며, 이후 정기적인 인덱스 점검 기준의 토대를 마련했습니다.