검수요청.png검수요청.png

슬로우쿼리

위키원
Asadal (토론 | 기여)님의 2020년 8월 13일 (목) 22:51 판
이동: 둘러보기, 검색

슬로우쿼리(Slow Query)란 DBMS 가 요청자로부터 요청받은 쿼리를 수행할때 일정 시간 이상 수행되지 못한 쿼리이다.[1]

개요

슬로우 쿼리가 많으면 성능저하가 발생하며 mysql 프로세스가 cpu 점유를 많이 하거나 db접속이 원활하지 않으면 분석이 가능하다.

특징

슬로우 쿼리를 이용하여 원인 분석에 도움이 될 수도 있다. log 를 쌓이게 하기 위해 mysql 실행시에 다음 옵션을 함께 추가하거나, my.cnf 파일을 직접 수정하여 mysql 를 실행할 수도 있다. [2]

슬로우쿼리 설정

 vi /etc/my.cnf 
 log-slow-queries = /var/log/mysql/mysql-slow.log   => 슬로우 쿼리 위치
 slow_query_log = 1   => 1은 슬로우 쿼리를 사용하겠다는 뜻
 long_query_time = 10   => 10초 이상 걸리는 쿼리를 슬로우쿼리 로그에 찍히게 한다.

my.cnf 파일 확인

my.cnf로 수정할 경우 mysql 서비스 재시작을 해야한다. [1]

항목 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

my.sql 파일 확인

mysql 내에서 서비스 재시작을 하지않고 적용이 가능하다.[1]

항목 my.cnf 추가내용
* 해당 값 이상의 로그 기록 * 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;

슬로우 쿼리 용어

[1]

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

각주

  1. 1.0 1.1 1.2 1.3 슬로우쿼리〉, 《폐관코딩》, 2019-11-28
  2. 슬로우쿼리 특징〉, 《이건없지》, 2009-08-12

참고자료

같이 보기


  검수요청.png검수요청.png 이 슬로우쿼리 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.