使用MySQL的PROFILING调试功能

php中文网
发布: 2016-06-07 17:21:15
原创
1581人浏览过

MySQL5.0.37版本以上支持PROFILING调试功能,让您可以了解SQL语句消耗资源的详细信息。因为它需要调用系统的getrusage()函数,所

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

参考资料:

PROFILING以及PROFILE和PROFILES的格式如下:

mysql> ? SHOW PROFILES;
--------------------------------------------------------------------------------
SHOW PROFILE [type [, type] … ]
    [FOR QUERY n]
    [LIMIT row_count [OFFSET offset]]

type:
    ALL
  | BLOCK IO
  | CONTEXT SWITCHES
  | CPU
  | IPC
  | MEMORY
  | PAGE FAULTS
  | SOURCE
  | SWAPS
--------------------------------------------------------------------------------

默认情况下,这个调试功能是关闭的,您可以查看MySQL数据库的变量参数:

mysql> SELECT @@PROFILING;
+-------------+
| @@PROFILING |
+-------------+
|          0 |
+-------------+

mysql> show variables like '%profil%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| have_profiling        | YES  |
| profiling              | OFF  |
| profiling_history_size | 15    |
+------------------------+-------+

需要使用时,,可以通过SQL命令打开调试功能:

mysql> SET PROFILING=1;

 

然后,开始执行需要测试的SQL语句,MySQL数据库将会记录想关的调试信息,例如:

mysql> SELECT * FROM mysql.user;
mysql> SHOW PROFILE;
+--------------------------------+----------+
| Status                        | Duration |
+--------------------------------+----------+
| starting                      | 0.000041 |
| Waiting for query cache lock  | 0.000007 |
| checking query cache for query | 0.000044 |
| checking permissions          | 0.000011 |
| Opening tables                | 0.000024 |
| System lock                    | 0.000015 |
| init                          | 0.000038 |
| optimizing                    | 0.000009 |
| statistics                    | 0.000014 |
| preparing                      | 0.000012 |
| executing                      | 0.000006 |
| Sending data                  | 0.000087 |
| end                            | 0.000008 |
| query end                      | 0.000006 |
| closing tables                | 0.000010 |
| freeing items                  | 0.000017 |
| logging slow query            | 0.000007 |
| cleaning up                    | 0.000007 |
+--------------------------------+----------+
18 rows in set (0.00 sec)

也可以显示当前所有已经记录的PROFILES,例如:

mysql> SHOW PROFILES;
+----------+------------+--------------------+
| Query_ID | Duration  | Query              |
+----------+------------+--------------------+
|        1 | 0.07194300 | SHOW DATABASES    |
|        2 | 0.01126250 | SELECT DATABASE()  |
|        3 | 0.00059125 | SHOW TABLES        |
|        4 | 0.96143900 | SELECT * FROM  |
+----------+------------+--------------------+
4 rows in set (0.00 sec)

注意:这个List的长度由MySQL的数据库变量参数profiling_history_size决定,预设为15。
(命令查询数据库变量参数:mysql> show variables like 'profiling_history_size';)

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号