一. 简介
开启慢查询日志,可以让mysql或者mariadb记录执行时超过指定时间的sql语句。
二. 开启慢查询日志设置
1. 在mariadb的配置文件/etc/my.cnf(centos系统是该文件,其他系统请自行寻找mysql或mariadb的配置文件)中的[mysqld]下面添加以下语句。重启数据库即可。
[mysqld]
slow_query_log = 1 # 开启慢日志查询
long_query_time = 2 # 把查询时间超过2秒的定义为慢查询,也可以设置为1秒
log_output = 'TABLE' # 保存日志到mysql数据的slow_log表
#slow_query_log_file=/var/log/mariadb/slow_query_log.txt #将日志保存带本地文件中
2. 参数说明:
slow_query_log:表示是否开启慢查询日志。
long_query_time:最长运行时间。表示运行超过该值的sql语句都会被定义为慢查询语句。该值默认为10秒。
log_output:表示当慢查询日志开启后,以哪种方式存放,log_output可以设置为4种值,“FILE”、“TABLE”、“FILE,TABLE”、“NONE”。
“FILE“:表示慢查询日志存放在指定的文件中。
“TABLE”:表示慢查询日志存放在mysql库中的slow_log表中,如下图所示。一般建议设置为该值。
“FILE,TABLE”:表示将满查询日志同时存放于指定的文件盒slow_log表中。但是这样的设置有可能会造成一定的IO压力。
“NONE”:表示不记录查询日志,即使slow_query_log设置为ON,如果log_ouput设置为NONE,也不会记录慢查询日志。
slow_query_log_file:当log_output设置为使用文件记录慢查询日志时,也就是设置为“FILE”或者“FILE,TABLE”时,该参数指定将慢查询日志存储到哪个日志文件。默认的慢查询日志文件名为“主机名-slow.log”,其位置为datadir参数所对应的目录位置。
3. 查看配置是否成功
数据库重启后,进入mysql,输入以下命令查看慢查询日志是否开启成功。
show variables like '%quer%';
三、测试
执行一条超过设置时间的sql语句:
MariaDB [(none)]> select sleep(3);
然后在数据库的mysql库中的slow_log表可以看到相应的记录
四,命令行修改
命令行查询慢日志设置:
show variables like '%slow_query_log%';
show variables like 'long_query_time%';
命令行修改慢日志设置:
set global show_query_log=0;
set global long_query_time=3;
注意: set 命令只对当前数据库生效,如果MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)
其他更详细的关于mysql慢查询日志见:http://www.zsythink.net/archives/1260