MySQL慢查询日志

慢查询日志收集

# 慢查询日志记录存储方式
SHOW VARIABLES LIKE '%log_output%';
#记录到文件,推荐
SET GLOBAL log_output='FILE';
#记录到日志表
SET GLOBAL log_output='TABLE';
#混合
SET GLOBAL log_output='FILE,TABLE';


# 查看是否开启慢查询日志
SHOW VARIABLES  LIKE '%slow_query_log%';
#开启
SET GLOBAL slow_query_log=1;
#设置日志名称路径
SET GLOBAL slow_query_log_file="e:\mysql_slow_query.log";

# set global只对当前数据库生效,如果MySQL重启后则会失效
# 如果要永久生效,就必须修改配置文件my.cnf/my.ini

#slow_query_log =1
#slow_query_log_file=E:\mysql\mysql-5.7.15\data\hostname-slow.log

#运行时间>long_query_time的记录到日志
SHOW VARIABLES LIKE 'long_query_time%';
#设置慢查询阈值
SET GLOBAL long_query_time=2;
#另外开窗口查看
SHOW VARIABLES LIKE 'long_query_time%';
#或使用下命令返回最新值
SHOW GLOBAL VARIABLES LIKE 'long_query_time';

SELECT sleep(4);


# 未使用索引的查询也被记录到慢查询日志中
SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
#将所有没有使用到索引的sql语句都记录到慢查询日志中
SET GLOBAL log_queries_not_using_indexes=1;

# 多少条慢查询记录,可以使用系统变量
SHOW GLOBAL STATUS LIKE '%Slow_queries%';


#存储方式为日志表
SELECT * FROM mysql.slow_log;
TRUNCATE TABLE mysql.slow_log

##存储为文件时,查看慢查询日志
#安装ActivePerl  http://www.activestate.com/activeperl
#cmd命令
mysqldumpslow.pl --help
mysqldumpslow.pl -s c -t 10 E:\mysql\mysql-5.7.15\data\hostname-slow.log
View Code

慢查询日志分析
将数据库服务器(5.5.53-0ubuntu0.14.04.1)收集到的慢日志文件拿到本地(Windows7)分析

##存储为文件时,查看慢查询日志
#Windows环境先安装ActivePerl  http://www.activestate.com/activeperl
#cmd命令
mysqldumpslow.pl --help

#按执行时长/次数前10
perl E:\MySQL\mysql-5.5.54\bin\mysqldumpslow.pl -s t -t 10 F:\GLGame\116slowlog\iZwz93ljqlvdsrwa7d6iobZ-slow_new.log >F:\GLGame\116slowlog\AnalysebByT.txt
perl E:\MySQL\mysql-5.5.54\bin\mysqldumpslow.pl -s c -t 10 F:\GLGame\116slowlog\iZwz93ljqlvdsrwa7d6iobZ-slow_new.log >F:\GLGame\116slowlog\AnalysebByC.txt

注意,mysqldumpslow.pl所属数据库的版本应该与慢查询日志所属数据库版本的发行序列号(前两位)一致。最开始本地用5.7.15/5.6.33的去分析5.5.53收集到的慢查询日志

高版本得到的分析结果Time/Lock/Rows全部是0。
使用PowerShell查找关键字得到样例语句

select-string *.log -pattern "KeyWords" -List


EXPLAIN样例语句,分析执行计划。

posted @ 2017-02-04 15:26  醒嘞  阅读(436)  评论(0编辑  收藏  举报