세 가지 주요 MySQL 로그의 느린 쿼리 로그

느린 쿼리 로그

느린 쿼리 로그는 실행 시간이 long_query_time 초를 초과하는 SQL 문으로 구성됩니다. 이러한 문은 최소 min_examined_row_limit 행을 확인해야합니다. 즉, 확인 된 행 수가 이보다 적은 쿼리는 느린 쿼리 로그에 기록되지 않으며 기본값은 기본값입니다. 값은 0).

느린 쿼리 로그는 실행 시간이 오래 걸리는 쿼리를 찾는 데 사용할 수 있으므로 최적화 후보로 사용할 수 있습니다. 그러나 길고 느린 쿼리 로그를 확인하는 것은 시간이 많이 걸리는 작업 일 수 있습니다. 이를 더 쉽게하기 위해 mysqldumpslow 명령을 사용하여 느린 쿼리 로그 파일을 처리하고 그 내용을 요약 할 수 있습니다.

초기 잠금을 획득하는 시간은 실행 시간으로 계산되지 않습니다. mysqld가 모든 잠금을 실행하고 해제 한 후 느린 쿼리 로그에 명령문을 작성하므로 로그 순서가 실행 순서와 다를 수 있습니다.

느린 쿼리 로그 매개 변수

 long_query_time最小值和默认值分别为010

기본적으로 쿼리에 인덱스를 사용하지 않는 관리 문이나 쿼리는 기록되지 않습니다. 나중에 설명하는대로 log_slow_admin_statements를 사용하고이 동작을 log_queries_not_using_indexes로 변경할 수 있습니다.

기본적으로 느린 쿼리 로그는 비활성화되어 있습니다. 초기 느린 쿼리 로그 상태를 명시 적으로 지정하려면
--slow_query_log[={0|1}]。

--slow_query_log매개 변수가 없거나 매개 변수가 1이면 로그가 활성화됩니다.

--slow_query_log매개 변수가 0이면 로그가 비활성화됩니다. 로그 파일 이름을 지정하려면

--slow_query_log_file=file_name。

로그 저장 위치를 ​​지정하려면 log_output 시스템 변수를 사용하십시오.

느린 쿼리 로그 파일의 이름을 지정하지 않는 경우 기본 이름은 host_name-slow.log입니다. 다른 디렉토리를 지정하기 위해 절대 경로 이름이 제공되지 않는 한 서버는 데이터 디렉토리에 파일을 생성합니다.

느린 쿼리의 구성을 보려면 'slow_query %'; 문과 같은 변수 표시를 사용할 수 있습니다.

예 :


mysql> show variables like 'slow_query%';
+---------------------+---------------------------+
| Variable_name       | Value                     |
+---------------------+---------------------------+
| slow_query_log      | ON                        |
| slow_query_log_file | /usr/mysql/local-slow.log |
+---------------------+---------------------------+
2 rows in set (0.00 sec)

느린 쿼리 로그를 비활성화 또는 활성화하거나 런타임에 로그 파일 이름을 변경하려면 전역 변수 slow_query_log 및 slow_query_log_file 시스템 변수를 사용합니다. slow_query_log를 0으로 설정하여 로깅을 비활성화하고 1로 설정하여 로깅을 활성화합니다. slow_query_log_file을 설정하여 로그 파일의 이름을 지정합니다. 로그 파일이 이미 열려있는 경우 닫고 새 파일을 엽니 다.

–log-short-format 옵션을 사용하면 서버가 느린 쿼리 로그에 적은 정보를 기록합니다.

느린 쿼리 로그에 느린 관리 문을 포함하려면 log_slow_admin_statements 시스템 변수를 활성화합니다. 관리 성명에는 다음이 포함됩니다.ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、optimization TABLE和REPAIR TABLE。

느린 쿼리에 인덱스를 사용하지 않는 쿼리를 포함하려면 log_queries_not_using_indexes 시스템 변수를 활성화해야합니다. 인덱스를 사용하지 않는 쿼리를 기록 할 때 느린 쿼리 로그가 빠르게 커질 수 있습니다.

서버는 느린 쿼리 로그에 쿼리를 쓸지 여부를 결정하기 위해 다음 순서로 제어 매개 변수를 사용합니다.

1、该查询必须不是管理语句,或者 log_slow_admin_statements 必须启用。

2、查询必须花费至少long_query_time秒,或者log_queries_not_using_indexes必须启用,并且查询没有使用索引进行行查找。

3、该查询必须至少检查了 min_examined_row_limit 行。

4、不得根据log_throttle_queries_not_using_indexes 设置禁止查询 。

기본적으로 복제 서버는 복제 된 쿼리를 느린 쿼리 로그에 기록하지 않습니다. 이 설정을 변경하려면 log_slow_slave_statements 시스템 변수를 활성화하십시오. 행 기반 복제 (binlog_format = ROW)를 사용하는 경우 log_slow_slave_statements가 유효하지 않습니다. 바이너리 로그에 문 형식으로 쿼리가 기록 된 경우에만 복사본의 느린 쿼리 로그에 쿼리가 추가됩니다. 즉, binlog_format = 문이 설정되거나 binlog_format = MIXED가 설정되고 문이 기록 될 때 문 형식으로 느린 쿼리는 느린 쿼리 로그에 기록됩니다.

느린 쿼리 로그 콘텐츠

느린 쿼리 로그가 활성화되면 서버는 log_output 시스템 변수로 지정된 대상에 출력을 기록합니다. 로깅이 활성화 된 경우 서버는 로그 파일을 열고 시작 메시지를 기록합니다. 그러나 파일 로그 대상을 선택하지 않으면 파일에 대해 더 이상 쿼리 로깅이 수행되지 않습니다.

느린 쿼리 로그가 활성화되고 FILE이 출력 대상으로 선택되면 로그에 기록되는 각 문은 # 문자로 시작하는 줄로 시작하고 다음 필드를 포함합니다 (모든 필드가 한 줄에 있음).

Query_time: duration

语句执行时间,以秒为单位。

Lock_time: duration

获取锁的时间(以秒为单位)。

Rows_sent: N

发送给客户端的行数。

Rows_examined:

服务器层检查的行数(不计算存储引擎内部的任何处理)。

느린 쿼리 로그 파일에 기록 된 각 문 앞에는 느린 문의 기록 시간을 나타내는 타임 스탬프가 포함 된 SET 문이옵니다 (명령문은 실행이 완료된 후 발생 함).

추천

출처blog.csdn.net/qq_36551991/article/details/111825552