架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8501|回复: 0

[资料] Mysql使用profiling分析执行sql语句慢的原因

[复制链接]
发表于 2017-7-6 11:12:17 | 显示全部楼层 |阅读模式

CleverCode的同事最近给我推荐了一个分析MySQL中sql语句的工具profiling,发现这个工具非常不错,能够很准确的分析出查询的过程中sql语句具体的时间花在了哪里。CleverCode在这里总结一下,分享给大家。

1 简介

MySQL 的 Query Profiler 是一个使用非常方便的 Query 诊断分析工具,通过该工具可以获取一条Query 在整个执行过程中多种资源的消耗情况,如 CPU,IO,IPC,SWAP 等,以及发生的 PAGE FAULTS,CONTEXT SWITCHE 等等,同时还能得到该 Query 执行过程中 MySQL 所调用的各个函数在源文件中的位置。

MySQL5.0.37版本以上支持PROFILING调试功能,让您可以了解SQL语句消耗资源的详细信息。因为它需要调用系统的getrusage()函数,所以只是在Linux/Unix类平台上才能使用,而不能在Windows平台上使用。而且,PROFILING是针对处理进程(process)而不是线程(thread)的,服务器上的其他应用,可能会影响您的调试结果,因此,这个工具适合开发过程中的调试,如果要在生产环境中调试使用,则要注意它的局限性。

2 操作

2.1 查看是否已经启用profile,默认是关闭的。


2.2 启用profiling。变量profiling是用户变量,每次都得重新启用。


2.3 执行以下语句。为避免之前已经把 SQL 存放在 QCACHE 中, 建议在执行 SQL 时, 强制 SELECT 语句不进行 QCACHE 检测。这样可以提交分析的准确性。


2.4 使用show profile查询最近一条语句的执行信息。(分析:select sql_no_cache count(*) from system_user where age > 20)


QQ截图20170706110223.jpg

2.5 使用show profiles。查看在服务器上执行语句的列表。(查询id,花费时间,语句) 。


QQ截图20170706110959.jpg

2.6 使用show profile查询制定ID的执行信息。这里分析ID为6的语句。(分析:select sql_no_cache count(*) from system_user where age > 20)。


2.7 获取 CPU 和 Block IO 的消耗。


QQ截图20170706111131.jpg

2.8 获取其他信息。都可以通过执行 “SHOW PROFILE *** FOR QUERY n” 来获取。参考地址:http://dev.mysql.com/doc/refman/5.6/en/show-profile.html。







上一篇:新人报道
下一篇:重磅消息!小程序开发免费啦!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-3-28 21:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表