MySQL查询剖析工具show profile
1、开启 profiling 参数
set profiling=1;
2、执行SQL语句
select * from sys_user;
select * from sys_menu;
3、获取系统保存的所有Query 的 profile 概要信息
mysql> show profiles;
+----------+------------+------------------------+
| Query_ID | Duration | Query |
+----------+------------+------------------------+
| 1 | 0.00022875 | select * from sys_user |
| 2 | 0.00037200 | select * from sys_menu |
+----------+------------+------------------------+
2 rows in set, 1 warning (0.00 sec)
4、获取指定profile详细信息
mysql> show profile all for query 2;
+----------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+----------------------+-------------+
| Status | Duration | CPU_user | CPU_system | Context_voluntary | Context_involuntary | Block_ops_in | Block_ops_out | Messages_sent | Messages_received | Page_faults_major | Page_faults_minor | Swaps | Source_function | Source_file | Source_line |
+----------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+----------------------+-------------+
| starting | 0.000064 | 0.000029 | 0.000030 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL |
| checking permissions | 0.000007 | 0.000003 | 0.000003 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | check_access | sql_authorization.cc | 809 |
| Opening tables | 0.000015 | 0.000007 | 0.000008 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | open_tables | sql_base.cc | 5815 |
| init | 0.000020 | 0.000010 | 0.000010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | handle_query | sql_select.cc | 128 |
| System lock | 0.000007 | 0.000003 | 0.000003 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | mysql_lock_tables | lock.cc | 330 |
| optimizing | 0.000003 | 0.000002 | 0.000001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | optimize | sql_optimizer.cc | 158 |
| statistics | 0.000011 | 0.000005 | 0.000006 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | optimize | sql_optimizer.cc | 374 |
| preparing | 0.000008 | 0.000005 | 0.000004 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | optimize | sql_optimizer.cc | 482 |
| executing | 0.000003 | 0.000001 | 0.000001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | exec | sql_executor.cc | 126 |
| Sending data | 0.000193 | 0.000184 | 0.000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | exec | sql_executor.cc | 202 |
| end | 0.000003 | 0.000003 | 0.000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | handle_query | sql_select.cc | 206 |
| query end | 0.000005 | 0.000006 | 0.000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | mysql_execute_command | sql_parse.cc | 4956 |
| closing tables | 0.000007 | 0.000006 | 0.000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | mysql_execute_command | sql_parse.cc | 5009 |
| freeing items | 0.000017 | 0.000017 | 0.000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | mysql_parse | sql_parse.cc | 5622 |
| cleaning up | 0.000010 | 0.000010 | 0.000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | dispatch_command | sql_parse.cc | 1931 |
+----------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+----------------------+-------------+
15 rows in set, 1 warning (0.00 sec)
| 上图横向意义 | |
|---|---|
| Status | 状态 |
| Duration | 持续时间 |
| CPU_user | CPU用户 |
| CPU_system | CPU系统 |
| Context_voluntary | 上下文主动切换 |
| Context_involuntary | 上下文被动切换 |
| Block_ops_in | 阻塞的输入操作 |
| Block_ops_out | 阻塞的输出操作 |
| Messages_sent | 消息发送 |
| Messages_received | 消息接收 |
| Page_faults_major | 主分页错误 |
| Page_faults_minor | 次分页错误 |
| Swaps | 交换次数 |
| Source_function | 源功能 |
| Source_file | 源文件 |
| Source_line | 源代码行 |
| 上图纵向意义 | |
|---|---|
| starting | 开始 |
| checking permissions | 权限检查 |
| Opening tables | 打开表 |
| init | 初始化 |
| System lock | 系统锁 |
| optimizing | 优化 |
| statistics | 统计 |
| preparing | 准备 |
| executing | 执行 |
| Sending data | 发送数据 |
| Sorting result | 排序 |
| end | 结束 |
| query end | 查询结束 |
| closing tables | 关闭表/去除TMP表 |
| freeing items | 释放物品 |
| cleaning up | 清理 |
一般情况下 ,使用以下语句就够了
show profile cpu,block io for query 2;
浙公网安备 33010602011771号