开启方式及存储格式
- 查询是否开启
show variables like 'slow_query_log'
- 开启慢查询日志
set global slow_query_file= 'xxx/slow.log';set global log_queries_not_using_indexs=on;set global long_query_time=1;set global slow_query_log=on;
- 查看慢查询日志配置信息
show variables like '%slow%';
- 查看日志
cat xxx/slow.log
# Time: 170618 10:07:30 # User@Host: root[root] @ localhost [127.0.0.1]# Query_time: 0.000000 Lock_time: 0.000000 Rows_sent: 400 Rows_examined: 400#执行时间SET timestamp=1497751650;#执行内容SELECT * FROM `sakila`.`payment` WHERE amount > 0.00 ORDER BY `payment_id` DESC LIMIT 400;
注意
- set global为全局session生效,但在mysqld重启后将会失效,若要持续有效则需要写入my.cnf
- 设置long_query_time后,在下一次连接mysql时才会生效
分析慢查询工具
mysqldumpslow
- 查看TOP3慢查询
mysqldumpslow -t 3 /xxx/mysql-slow.log | more
pit-query-digest
- 分析最近12小时内的查询
pt-query-digest --since=12h slow.log > slow_report2.log
- 指定时间内的慢查询
pt-query-digest slow.log --since '2014-04-17 09:30:00' --until '2014-04-17 10:00:00'> > slow_report3.log