데이터베이스 느린 쿼리 원인 찾기

데이터베이스 응답 속도 저하 원인을 분석하고 쿼리 최적화 방법을 정리한다.

쿼리 개선 사례 분석

비효율적인 쿼리를 인덱스 활용 및 컬럼 선별을 통해 개선하는 과정을 분석했다.

개선 전: 전체 조회 및 비효율적 필터링

SELECT * FROM logs WHERE log_message LIKE '%ERROR%';

와일드카드를 전면에 배치할 경우 인덱스 활용이 불가능하여 성능이 저하된다.

개선 후: 인덱스 활용 및 컬럼 선별

SELECT id, created_at, level FROM logs 
WHERE created_at >= '2026-05-01' AND level = 'ERROR'
LIMIT 20;

인덱스가 적용된 컬럼을 활용하고 필요한 데이터만 추출하여 성능을 향상시켰다.

성능 저하 요인

  • 인덱스 부재: 전체 데이터를 탐색하는 ‘풀 테이블 스캔’을 유발하여 성능을 저하시킨다.
  • 과도한 컬럼 조회 (SELECT *): 네트워크 부하와 메모리 소모를 증가시킨다.
  • 비효율적 LIKE 연산: 전방 와일드카드(%문구) 사용 시 인덱스 활용이 제한된다.
  • 일괄 조회 부하: 페이징 처리(LIMIT) 누락 시 시스템 부하가 가중된다.

최적화 전략

EXPLAIN 명령어로 실행 계획을 분석하는 습관이 중요하다.

인덱스 활용 여부와 탐색 행 수를 파악하여 병목 지점을 개선하는 것이 쿼리 최적화의 핵심인 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts