天天看点

Mysql慢查询

查看慢查询状态

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 (单位秒)           

日志分析

Mysql慢查询
Time :日志记录的时间

User@Host:执行的用户及主机

Query_time:查询耗费时间 

Lock_time 锁表时间 

Rows_sent 发送给请求方的记录条数 

Rows_examined 语句扫描的记录条数

SET timestamp 语句执行的时间点

select .... 执行的具体sql语句           

慢查询日志分析工具

一般情况下直接vim或以文本工具打开日志文件即可。mysql还提供了mysqldumpslow命令可以按条件筛选等。

Mysql慢查询

-s表示排序依据,al表示按锁表时间,ar表示按照发送条数,at表示按照查询时间,相当于order by;

-t 显示几条记录,相当于limit。

例如:mysqldumpslow -t 10 -s at /var/lib/mysql/mysql_slow_query.log