정의
DBMS가 Client로부터 요청받은 query를 수행할 때 일정 시간 이상 수행되지 못한 query
- slow query 발생 시 로그를 통해 원인을 파악할 수 있다.
slow query 잡는 법
- 어느정도 느려지면, 쿼리 실행문을 로그에 남길건지 postgresql.conf에 설정값을 추가해줘야한다.
1. 발생 로그 남기기
2. 모든 쿼리 실행계획 로그 남기기
3. 쿼리 실행 통계 보기
로그 쌓는 법
슬로우쿼리는 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; |
각 단어 의미 |
Time = 쿼리 요청 시각 |
Query_time : 쿼리 수행 시간 |
Lock_time : 락이 걸린 시간 |
Rows_sent = 쿼리 결과 row수 |
Rows_examined = 쿼리대상 row수 |
출처 : 폐관코딩 티스토리