삼분공부/DataBase

[SQL] MySQL Slow Query Log 설정과 활용법

케이쓰리 2025. 3. 26. 16:02

MySQL에서 성능 저하를 유발하는 느린 쿼리(Slow Query)를 파악하고 최적화하기 위해 Slow Query Log를 활용합니다. 이 글에서는 Slow Query Log를 활성화하고 관리하는 방법에 대해 알아보겠습니다.

1. Slow Query Log란?

MySQL에서 Slow Query Log는 특정 시간 이상 실행된 느린 쿼리를 기록하는 로그입니다. 성능 문제를 진단하고 최적화할 수 있는 중요한 자료로 활용됩니다.

Slow Query Log의 필요성

  • 데이터베이스 성능 저하를 사전에 파악할 수 있음
  • 느린 쿼리의 개선점을 확인 가능
  • 성능 최적화와 모니터링에 유용

2. Slow Query Log 확인 방법

Slow Query Log와 관련된 변수를 확인하려면 아래 명령어를 사용합니다.

SHOW VARIABLES LIKE '%slow_query%';

예시 출력

+---------------------+-----------------+
| Variable_name       | Value           |
+---------------------+-----------------+
| slow_query_log      | ON              |
| slow_query_log_file | /var/log/slow.log|
| long_query_time     | 10.000000        |
+---------------------+-----------------+

주요 변수 설명

  1. slow_query_log : Slow Query Log 활성화 여부 (ON/OFF)
  2. slow_query_log_file : 로그 파일 경로
  3. long_query_time : 느린 쿼리로 간주되는 최소 실행 시간 (초)

3. Slow Query Log 활성화 방법

만약 Slow Query Log가 비활성화되어 있다면 아래 명령어로 활성화할 수 있습니다.

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;  -- 1초 이상 소요되는 쿼리 기록

로그 파일 경로 설정

로그 파일 경로를 직접 지정할 수 있습니다.

SET GLOBAL slow_query_log_file = '/path/to/slow-query.log';

4. 설정 지속성 확보하기

MySQL 서버를 재부팅하면 설정이 초기화될 수 있으므로, my.cnf 또는 my.ini 파일에 설정을 추가해야 합니다.

설정 파일 수정

파일 경로는 주로 /etc/my.cnf 또는 /etc/mysql/my.cnf입니다.

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/slow-query.log
long_query_time = 1

파일 수정 후 MySQL을 재시작합니다.

sudo systemctl restart mysqld

5. Slow Query Log 분석하기

로그 파일을 직접 확인하여 느린 쿼리를 분석할 수 있습니다.

cat /var/log/slow-query.log

또는 mysqldumpslow 명령어를 사용하여 요약본을 볼 수 있습니다.

mysqldumpslow /var/log/slow-query.log