慢查日志的两个辅助工具:
1.mysqldumpslow
mysqldumpslow安装mysql时自带,但工具展示的信息还不够全面,主要是主机信息,sql以及当前sql执行的次数,消耗的时间
使用方式: mysqldumpslow -h (可以列出参数的帮助列表) 需要分析的慢查询日志文件.【注意,要exit mysql再执行】
执行下程序进行测试:
查看慢查日志的储存路径:
show variables like 'slow%'; mysqldumpslow -t 3 /var/lib/mysql/iZbp15m012qi4y3tp6rhkpZ-slow.log | more;
2.pt-query-digest
如果不存在,Linux可以安装下:apt-get install percona-toolkit;
输出到文件:pt-query-digest show-log > slow_log.report
输出到数据库表 pt-query-digest show.log -review \
h=127.0.0.1,D=test,p=root.P=3306,u=root,t=query_review \
--create-reviewtable \
--review-history t=hostname_show
pt-query-digest慢查询日志的输出有三部分
第一部分:
显示了日志的时间范围,以及总的SQL数量和不同的SQL数量
第二部分:
一些表的统计信息
Response time:响应时间占比
Calls : sql执行次数
第三部分:具体的SQL是什么
![](https://img-blog.csdn.net/20170425185550807?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjgxOTQ1NTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
pt-query-digest分析慢查询日志文件比mysqldumpslow更丰富:
1.显示日志的时间范围,以及总的sql数量.
2.表的统计信息sql响应时间和执行次数。
3.具体的sql
解决:
1.查询时间长,查询次数多
2.IO大的sql,分析Rows Examine项,扫描的行数
3.未命中索引的sql,分析Rows Examine与Rows send发送的行数的对比