>  기사  >  데이터 베이스  >  MySQL의 일반 쿼리 로그와 느린 쿼리 로그의 차이점

MySQL의 일반 쿼리 로그와 느린 쿼리 로그의 차이점

一个新手
一个新手원래의
2017-09-08 10:12:491405검색


Intro

<br/>


이전 공유에서 MySQL 로그 유형은 오류 로그(error_log), 쿼리 로그(query_log), 바이너리 로그(binary_log)의 세 가지 유형으로 나눌 수 있다고 언급했는데, 소개를 위해 error_log의 사용법은 MySQL 로그 error_log를 참조하세요. 이 글에서는 주로 General_log와 Slow_query_log의 원리와 사용법을 소개합니다.

일반 쿼리 로그

일반 쿼리 로그(general_log)는 주로 각 클라이언트가 데이터베이스에 접속하고 데이터베이스에서 SQL 문이 실행될 때 관련 정보를 쿼리하는 데 사용됩니다. 일반 쿼리 로그는 활성화하고 경로를 저장합니다:

mysql> show variables like "general_log%";
+------------------+------------------------------+| Variable_name    | Value                        |
+------------------+------------------------------+| general_log      | OFF                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)
화면 출력 general_loggeneral_log_file에는 현재 스위치 상태와 일반 쿼리 로그의 경로가 기록됩니다.

2. 일반 쿼리 로그를 켭니다. general_loggeneral_log_file记录了当前通用查询日志的开关状态与路径。

2、开启通用查询日志

    set global general_log = ON

查询是否成功:

mysql> show variables like "general_log%";
+------------------+------------------------------+| Variable_name    | Value                        |
+------------------+------------------------------+| general_log      | ON                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)

成功。

退出一下看有没有生成并且正确记录:

[root@localhost ~]# cat /var/lib/mysql/localhost.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
2017-08-14T09:33:11.364650Z     5 Quit  
2017-08-14T09:33:20.671113Z     6 Connect   root@localhost on  using Socket
2017-08-14T09:33:20.671323Z     6 Query select @@version_comment limit 1
2017-08-14T09:33:22.964610Z     6 Query show variables like &#39;%log%&#39;
2017-08-14T09:33:24.574224Z     6 Quit

成功,并且我们可以看到,log不仅记录了SQL命令,同时也包括了执行时间、Id、命令类型等相关数据

慢查询日志

慢查询日志记录了SQL语句时间超过了预设的long_query_time的语句,在数据量较大的情况下,可以看看慢查询日志中有哪些语句需要进行优化。

1、慢查询日志的配置

慢查询日志的配置可以在数据库配置文件my.cnf中查到:

[root@localhost ~]# cat /etc/my.cnf | grep -E &#39;long|slow|not_using_indexes&#39;long_query_time = 1#log-slow-queries = /var/log/mysql/slow.loglog_queries_not_using_indexes

可以看到:

long_query_time = 1的意思是SQL语句执行时间超过1s的,对其进行记录;
log-slow-queries = /var/log/mysql/slow.log是对慢查询日志路径的设置;
log_queries_not_using_indexes

    set slow_query_log = ON

쿼리 성공 여부:

[root@localhost ~]# cat /var/lib/mysql/localhost-slow.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument

성공. 종료하고 올바르게 생성되고 기록되었는지 확인하세요.

rrreee

성공하면 로그에 SQL 명령뿐만 아니라 실행 시간, ID, 명령 유형 및 기타 관련 데이터도 포함되는 것을 볼 수 있습니다.

느린 쿼리 log 🎜🎜🎜느린 쿼리 로그에는 SQL 문 시간이 미리 설정된 long_query_time을 초과하는 문이 기록됩니다. 데이터 양이 많을 경우 느린 쿼리 로그에서 어떤 문을 최적화해야 하는지 확인할 수 있습니다. 🎜🎜🎜1. 느린 쿼리 로그 구성 🎜🎜🎜느린 쿼리 로그 구성은 데이터베이스 구성 파일 my.cnf에서 확인할 수 있습니다. 🎜rrreee🎜다음을 볼 수 있습니다. 🎜🎜 long_query_time = 1은 SQL 문의 실행 시간이 1초를 초과하면 기록된다는 의미입니다. 🎜log-slow-queries = /var/log/mysql/slow.log 느린 쿼리를 위한 로그 경로 설정입니다. 🎜log_queries_not_using_indexes는 인덱스를 사용하지 않는 명령문이므로 기록 대상이 줄어들 수 있습니다🎜🎜실제 구성은 일반 쿼리 로그와 동일합니다. 느린 쿼리 로그를 활성화하는 mysql 대화형 인터페이스:🎜 rrreee🎜🎜2 쿼리가 성공했는지 확인하세요🎜🎜rrreee🎜성공. 🎜🎜단, Slow_query_log에는 사용자 권한 및 비밀번호와 관련된 내용이 기록될 수 있으니, Slow Query 로그 파일 사용 시 로그의 안전한 저장에 주의하시기 바랍니다. 🎜

위 내용은 MySQL의 일반 쿼리 로그와 느린 쿼리 로그의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.