본문 바로가기

Linux/MySQL

Slow Query 설정 및 확인





Slow Queries



안녕하세요. 이번엔 슬로우쿼리에 대한 내용입니다.

슬로우쿼리는 내가 지정한 시간보다 실행하는데 오래걸린 쿼리에 대한 Log를 쌓는 것인데요.

특정 작업이 유달리 오래 걸린다면 해당 로그를 통해 원인을 파악할 수 있겠죠.





설정


슬로우쿼리는 my.cnf 파일 내에서 설정해줍니다.

my.cnf의 경로는 주로 /etc/my.cnf를 사용합니다. 편집기를 통해 다음의 내용을 입력합니다.

my.cnf로 수정할 경우 mysql 서비스 재시작이 필요합니다.



항목

my.cnf 추가 내용

 해당 값(초) 이상의 로그 기록

 long_query_time = 3 

 슬로우쿼리 활성 여부 (0 = 비활성 / 1 = 활성)

 slow_query_log = 1

 슬로우쿼리 로그파일 경로

 slow_query_log_file = /var/log/mysql/slow_queries.log 

 index를 사용하지 않는 쿼리 기록 여부

 log_queries_not_using_indexes = on 




또는 mysql 내에서 아래와 같은 명령어를 통해 서비스 재시작을 하지 않고 적용도 가능합니다.

항목

mysql 실행 명령어 

 해당 값(초) 이상의 로그 기록

 mysql> set global long_query_time = 3;

 슬로우쿼리 활성 여부 (0 = 비활성 / 1 = 활성)

 mysql> set global slow_query_log = 1;

 슬로우쿼리 로그파일 경로

 mysql> set global slow_query_log_file="/var/log/mysql/slow_queries.log

 index를 사용하지 않는 쿼리 기록 여부

 mysql> set global log_queries_not_using_indexes = on;





확인



[root@localhost ~]# cat /var/logl/mysql/slow_queries.log


Time = 쿼리 요청 시각

Query_time : 쿼리 수행 시간

Lock_time : 락이 걸린 시간

Rows_sent = 쿼리 결과 row수

Rows_examined = 쿼리대상 row수