본문 바로가기
프로그래밍/DB

[DB] 슬로우 쿼리(slow query)

by imfireguy 2021. 6. 15.
반응형

@Campaign Creators unsplash

slow query는 무엇인가요?

DBMS 가 client로부터 요청받은 query를 수행할 때 일정 시간 이상 수행되지 못한 query입니다.  

즉 길어야 1~2초 걸리는 db 쿼리가 예상보다 오래 걸리는 경우를 뜻합니다.

 

언제든지 값이 정상적이지 않을거라는 예외상황이 발생이 되니 로그를 잘 대고 확인하시면 됩니다.

 

로그 쌓는 방법

mysql의 경우에 슬로 쿼리는 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>set global long_query_time = 3;
슬로우쿼리 활성 여부(0 = 비활성 / 1=활성) mysql>set global slow_query_log = 1;
슬로우쿼리 로그파일 경로 mysql> set global slow_query_log_file="var/log/myslq/slow_queries.log"
index를 사용하지 않는 쿼리 기록 여부 mysql>set global log_queries_not_using_indexes=on;

 

Time = 쿼리요청시각
Query_time = 쿼리 수행 시간
Lock_time = 락이 걸린 시간
Rows_sent = 쿼리 결과 row 수
Rows_examined = 쿼리 대상 row 수

 

반응형

댓글