01 · DB/Infra · 2025
DB 인덱스 최적화 & 용량 53.8% 절감
수년간 운영되며 비대해진 중앙 운영 DB를, 실사용 쿼리 분석 기반으로 불필요 인덱스를 걷어내고 SQL을 튜닝해 용량과 성능을 동시에 개선
작업자의 메모
인덱스 개수를 줄이는 일보다 삭제 후보가 실제 쿼리에서 쓰이지 않는지 확인하는 데 시간을 더 썼습니다. 운영 DB에서 사용 여부를 보지 않고 인덱스를 건드리면 성능 문제가 더 커질 수 있기 때문입니다.
배경
수년간 운영되어 온 중앙 운영 DB는 그동안 누적된 미사용 인덱스와 비효율 쿼리로 인해 저장 용량이 비대해지고 전반적인 성능이 저하된 상태였습니다.
역할
운영 쿼리를 모아 실행 계획과 인덱스 사용 여부를 확인했습니다. 미사용 인덱스와 레거시 테이블을 추린 뒤 SQL을 손봤고, 실제 삭제 범위와 적용 순서는 팀 리뷰를 거쳐 확정했습니다.
핵심 작업
- 실제 사용되는 쿼리 95개를 EXPLAIN으로 분석해 전체 인덱스 311개 중 224개(72%)가 실행 계획에서 전혀 쓰이지 않음을 정량적으로 증명
- 불필요 인덱스를 삭제하고 복합 인덱스의 컬럼 순서를 실제 실행 계획에 맞게 재구성
- SQL 튜닝: OR 조건을 UNION으로 전환하고 LIKE 와일드카드 패턴을 인덱스가 타도록 최적화
결과
- DB 용량 53.8% 절감 — 2.6TB → 1.2TB
- 초기 설치 시간 절반 — DB 생성 12시간 → 6시간
- 비용 절감 — 저장 자원 축소로 운영 비용에 직접 기여
- 서비스 품질 향상 — 쿼리 효율 개선으로 응답 성능 개선
웹 상세: https://portfolio.hwlabs.dev/items/db-index-optimization.html