Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 재시작 없이 느린 쿼리 로그(Slow Query Log) 활성화하는 방법

MySQL 재시작 없이 느린 쿼리 로그 활성화하기

MySQL에서는 SET 문을 사용하면 서버를 다시 시작하지 않고도 느린 쿼리 로그(slow query log)를 즉시 활성화할 수 있습니다. 운영 중인 데이터베이스 환경에서 성능 문제를 분석할 때 매우 유용한 방법입니다.

1. 느린 쿼리 로그 활성화 구문

기본적인 구문은 다음과 같습니다.

SET GLOBAL slow_query_log = 'Value';

위 구문에서 Value 자리에는 ON 또는 OFF 값을 입력할 수 있습니다. 느린 쿼리 로그를 활성화하려면 아래와 같이 실행합니다.

mysql> SET GLOBAL slow_query_log = 'ON';
Query OK, 0 rows affected (0.00 sec)

2. 설정 적용 여부 확인하기

느린 쿼리 로그가 정상적으로 켜졌는지 확인하려면 다음 쿼리를 실행합니다.

mysql> SHOW GLOBAL VARIABLES LIKE 'slow\_%';

실행 결과는 다음과 같습니다.

+---------------------+--------------------------+
| Variable_name       | Value                    |
+---------------------+--------------------------+
| slow_launch_time    | 2                        |
| slow_query_log      | ON                       |
| slow_query_log_file | DESKTOP-QN2RB3H-slow.log |
+---------------------+--------------------------+
3 rows in set (0.00 sec)

slow_query_log 값이 ON으로 표시되면 정상적으로 활성화된 것입니다. 또한 slow_query_log_file 변수를 통해 로그가 기록될 파일의 위치를 확인할 수 있습니다.

3. 느린 쿼리 판정 기준 시간 설정하기

기준 시간(초)보다 오래 걸리는 쿼리는 모두 느린 쿼리 로그 파일에 기록됩니다. 이 기준 시간은 long_query_time 변수로 조절할 수 있으며, 아래 예시에서는 20초로 설정했습니다.

mysql> SET GLOBAL long_query_time = 20;
Query OK, 0 rows affected (0.00 sec)

설정한 시간이 제대로 반영되었는지 확인합니다.

mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';

실행 결과는 다음과 같습니다.

+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 20.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

4. 로그 플러시(Flush)하기

위의 설정 작업을 마친 후에는 로그를 플러시하여 변경 사항을 적용하는 것이 좋습니다.

mysql> FLUSH LOGS;
Query OK, 0 rows affected (0.25 sec)

참고: 영구적인 설정 방법

참고 − 위의 SET 문은 MySQL 서버가 재시작되면 초기화될 수 있습니다. 영구적으로 설정하거나 비활성화하려면 my.cnf(또는 Windows의 경우 my.ini) 설정 파일을 수정해야 합니다. 예를 들어 slow_query_log = 0으로 설정하면 느린 쿼리 로그가 비활성화되며, slow_query_log = 1로 설정하면 서버 시작 시 자동으로 활성화됩니다.