mysql--18110定位慢查询

来源:互联网 发布:苏氏钻头淘宝 编辑:程序博客网 时间:2024/05/21 10:49

开启记录慢查询

设置记录慢查询时间

set global long_query_time = 1;这句是记录超过1秒的SQL执行语句

开启记录无索引慢查询

set global log_queries_not_using_indexes = on;

开启记录慢查询

set global slow_query_log= on;

查看刚刚的设置

show variables like 'slow_query_log';

慢查询日志文件

show variables like 'slow_query_log_file';

慢查询日志格式

# Time: 2016-10-28T15:59:22.416695Z 解释:慢查询执行的时间点# User@Host: root[root] @ localhost []  解释:执行SQL的主机信息# Query_time: 0.003073  Lock_time: 0.001320 Rows_sent: 2  Rows_examined:Query_time指查询所用时间,Lock_time指锁定时间,Rows_sent发送的行数,Rows_examined扫描的行数SET timestamp=1477670362;以时间戳的形式记录了此SQL执行的时间select * from store limit 10;   解释:SQL的具体内容

Mysqldumpslow

Mysqldumpslow Mysql自带的慢查询日志分析工具,分析的不太详细

mysqldumpslow -h 列出指令参数列表
-s 排序
-t num 前num条
exp:
mysqldumpslow -t 10 -s asc /home/…./slow.log

指令分析的报表内容如下:

Reading mysql slow query log from /var/lib/mysql/izwz9egy22njyfiobf3g9vz-slow.log

Count: 8 Time=0.88s (7s) Lock=4.53s (36s) Rows=13.1 (105), test[test]@[223.73.108.54]
SELECT STATE AS 状态, ROUND(SUM(DURATION),N) AS 期间, CONCAT(ROUND(SUM(DURATION)/N.N*N,N), ‘S’) AS 百分比 FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=N GROUP BY STATE ORDER BY SEQ

pt-query-digest

pt-query-digest (推荐,分析的详细)

1.查询次数多且每次查询占用时间长的SQL
通常为pt-query-digest分析的前几个查询
2.IO大的SQL
注意pt-query-digest分析中的Rows examine项
3.未命中索引的SQL
注意pt-query-digest分析中的Rows examine和Row send 的对比
当Rows examine>>Row send 基本上是使用了索引扫描或者表扫描的方式来进行查询,需要进行优化

http://blog.csdn.net/wangmuming/article/details/38383449
https://www.36nu.com/post/228.html
http://blog.csdn.net/johnstrive/article/details/46437547

原创粉丝点击