慢日志记录MySQL中的慢SQL,以及没有用到索引的SQL。
慢日志阈值通过参数long_query_time设置,超过该值则计入慢日志文件或者慢日志表中。
查看和重置慢日志阈值:
show variables like 'long%';
set long_query_time=5; //仅对当次服务器开启有效
修改my.cnf(Linux下)或者my.ini(Windows下)配置文件,则永久开启慢日志:
// 慢查询日志存放的位置
log-slow-queries=/var/lib/mysql/localhost-slow.log
//slow_query_log 慢查询开启状态 1 为开启
slow_query_log =1
//阈值
long_query_time=5
查看慢日志有关键值信息:
show variables like slow%;
默认slow_query_log为OFF,即未开启慢日志。
开启慢日志:
set global slow_query_log=1;
slow_launch_time: 慢查询超过的执行时间值
开启慢日志后,模拟一个慢sql:
select sleep(6);
执行结束后,会在\mysql\data\下生产slow.log日志文件。
查看慢日志条数:
show global status like '%Slow_queries%';
log_queries_not_using_indexes参数
如果运行的sql没有使用索引,如果开启了log_queries_not_using_indexes参数,如果该sql语句没有用到索引,则该sql会被记录慢日志。
查看log_queries_not_using_indexes开启状态:
show variables like 'log_queries_not_using_indexes';
慢日志格式
log_output参数指定了慢查询输出的格式,默认为file,就是上面提到过的slow.log日志文件。可以将它设置为table,则慢日志被记录到mysql数据库(安装mysl是默认的建立的数据库)中的slow_log表中。
查看和设置log_output参数:
show variables like 'log_output';
set global log_output='TABLE';
模拟慢日志:
select sleep(6);