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
慢查询日志分析
将数据库服务器(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样例语句,分析执行计划。
因为不懂,所以加倍努力!