查看慢查询状态
show variables like 'slow_query%'
主要变量:
slow_query_log:表示是否开启;
slow_query_log_file:表示保存慢查询信息的文件;
开启慢查询
set global slow_query_log = on
或直接在配置文件中开启:
slow-query-log=on
设置慢查询存储文件
set global slow_query_log_file = '/var/lib/mysql/mysql_slow_query.log'
或直接在配置文件中:
slow_query_log_file="/var/lib/mysql/mysql_slow_query.log"
另外:
没有命中索引的情况是否记录到慢查询文件:
set global log_queries_not_using_indexes = on
查询时间超过多长时间会进入慢查询日志:
set global long_query_time = 0.01 (单位秒)
日志分析
Time :日志记录的时间
User@Host:执行的用户及主机
Query_time:查询耗费时间
Lock_time 锁表时间
Rows_sent 发送给请求方的记录条数
Rows_examined 语句扫描的记录条数
SET timestamp 语句执行的时间点
select .... 执行的具体sql语句
慢查询日志分析工具
一般情况下直接vim或以文本工具打开日志文件即可。mysql还提供了mysqldumpslow命令可以按条件筛选等。
-s表示排序依据,al表示按锁表时间,ar表示按照发送条数,at表示按照查询时间,相当于order by;
-t 显示几条记录,相当于limit。
例如:mysqldumpslow -t 10 -s at /var/lib/mysql/mysql_slow_query.log