irpas技术客

Mysql-如何进行慢SQL查询_请叫我黄同学_mysql 慢sql查询

大大的周 1350

官方慢SQl查询

打开慢日志开关

因为开启慢查询日志是有代价的(跟 bin log、optimizer-trace 一样),所以它默认是关闭的:

show variables like 'slow_query%';

除了这个开关,还有一个参数,控制执行超过多长时间的 SQL 才记录到慢日志,默认是 10 秒。

除了这个开关,还有一个参数,控制执行超过多长时间的 SQL 才记录到慢日志,默认是 10 秒。

show variables like '%long_query%'; 可以直接动态修改参数(重启后失效)。 set @@global.slow_query_log=1; -- 1 开启,0 关闭,重启后失效 set @@global.long_query_time=3; -- mysql 默认的慢查询时间是 10 秒,另开一个窗口后才会查到最新值 show variables like '%long_query%'; show variables like '%slow_query%'; 或者修改配置文件 my.cnf。 以下配置定义了慢查询日志的开关、慢查询的时间、日志文件的存放路径。 slow_query_log = ON long_query_time=2 slow_query_log_file =/var/lib/mysql/localhost-slow.log 模拟慢查询: select sleep(10); 查询 user_innodb 表的 500 万数据(检查是不是没有索引)。 SELECT * FROM `user_innodb` where phone = '136'; 慢日志分析

1、日志内容

show global status like 'slow_queries'; -- 查看有多少慢查询 show variables like '%slow_query%'; -- 获取慢日志目录 cat /var/lib/mysql/ localhost-slow.log

有了慢查询日志,怎么去分析统计呢?比如 SQL 语句的出现的慢查询次数最多,平均每次执行了多久?人工肉眼分析显然不可能。

2、mysqldumpslow

官方分析

MySQL 提供了 mysqldumpslow 的工具,在 MySQL 的 bin 目录下。

mysqldumpslow --help

例如:查询用时最多的 10 条慢 SQL:

mysqldumpslow -s t -t 10 -g 'select' /var/lib/mysql/localhost-slow.log

Count 代表这个 SQL 执行了多少次;

Time 代表执行的时间,括号里面是累计时间;

Lock 表示锁定的时间,括号是累计;

Rows 表示返回的记录数,括号是累计。

除了慢查询日志之外,还有一个 SHOW PROFILE 工具可以使用


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #MySQL #慢sql查询 #bin #一样所以它默认是关闭的show #variables #like