首先需要安装Perl,在windows下安装Perl,安装过程很简单,从官网 http://strawberryperl.com/ 下载windows安装包,安装好之后,测试perl -v,如果能显示版本号,表示安装成功。

mysqldumpslow是一个perl脚本,只需下载并赋权即可执行。

D:\MySQL Datafiles>perl mysqldumpslow.pl --help
 Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
  --verbose    verbose
  --debug      debug
  --help       write this text to standard output
  -v           verbose
  -d           debug
  -s ORDER     what to sort by (al, at, ar, c, l, r, t), 'at' is default(排序方式)
                 al: average lock time(平均锁定时间)
                 ar: average rows sent(平均返回记录数)
                 at: average query time(平均查询时间)
                  c: count(访问计数)
                  l: lock time(锁定时间)
                  r: rows sent(返回记录)
                  t: query time(查询时间)
   -r           reverse the sort order (largest last instead of first)
   -t NUM       just show the top n queries(返回前面n条数据)
   -a           don't abstract all numbers to N and strings to 'S'
   -n NUM       abstract numbers with at least n digits within names
   -g PATTERN   grep: only consider stmts that include this string(正则匹配模式,大小写不敏感)
   -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),
                default is '*', i.e. match all
   -i NAME      name of server instance (if using mysql.server startup script)
   -l           don't subtract lock time from total time

使用示例:

  • 锁定时间最长的前10条
	perl mysqldumpslow.pl -s l -t 1 mysql_slow.log
  • 得到返回记录集最多的10个SQL
perl mysqldumpslow.pl -s r -t 10 mysql_slow.log
  • 得到访问次数最多的10个SQL
perl mysqldumpslow.pl -s c -t 10 mysql_slow.log
  • 得到按照时间排序的前10条里面含有左连接的查询语句
perl mysqldumpslow.pl -s t -t 10 -g “left join” mysql_slow.log
  • 另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况
perl mysqldumpslow.pl -s r -t 20 mysql_slow.log | more

windows 下mysql5.7 慢查询配置

查看慢配置查询的

show variables like ‘%query%’;

在这里插入图片描述

show variables like ‘long_query_time’ ; //可以显示当前慢查询时间
set long_query_time=1 ; //慢查询的时间默认为10秒 可以修改慢查询时间也可

mysql5.7 可以直接在配置文件my.ini 中写配置
/start*/
log_slow_admin_statements = ON
log_slow_slave_statements = ON
slow_query_log = 1 //开启慢查询 (很多博客说=on off ,我本机mysql实际是1 ,2 )
slow_query_log_file = E:\MySQL-5.7.13-winx64\data\pc-PC-slow.log //设置路径
long_query_time =1 //设置慢查询时间 超过一秒的记录
/end*/

以在my.ini种配置

/********************************************************/

查看sql语句执行时间
Show variables like ‘profiling’; 查看sql语句 性能分析
看profile是否开启 5.7的
mysql> show variables like ‘%profiling%’;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| have_profiling | YES |
| profiling | ON |
| profiling_history_size | 15 |
+————————+——-+
set profiling=on; 开启profile
查看执行过的sql 的执行时间
show profiles;

mysql> show profiles;
+———-+————+——————————————————————————-+
| Query_ID | Duration | Query |
+———-+————+——————————————————————————-+
| 1 | 0.00081975 | explain select * from t_log_login where id=’46702e55f23911e49d5cac162d8aadd4’ |
| 2 | 0.00436950 | select * from t_log_login where id=’46702e55f23911e49d5cac162d8aadd4’ |
+———-+————+——————————————————————————-+
查询所花费的时间 query_id=1 的语句执行时间

select sum(duration) from information_schema.profiling where query_id=1; # Query ID = 1

查看 # Query ID = 1的执行时间
mysql> show profile for query 1;

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐