From :
要使用该功能,mysql的版本必须在5.0.37版本以上。否则只能使用explain 的方式来检查。
profiling 功能可以了解到cpu io 等更详细的信息。
show profile 的格式如下:
SHOW PROFILE [type
[, type
] ... ]
n
] [LIMIT row_count
[OFFSET offset
]]type
: ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS
默认方式下该功能是关闭的:
mysql>select @@profiling;
+-------------+
| @@profiling |+-------------+| 0 |+-------------+1 row in set (0.00 sec)
打开功能
mysql>set profiling=1;
+-------------+
| @@profiling |+-------------+| 1 |+-------------+1 row in set (0.00 sec)
输入需要执行的sql 语句:
mysql>select count(*) from sysuser;
mysql>select count(*) from sysuser;
mysql> show profiles/G;*************************** 1. row ***************************
Query_ID: 1Duration: 0.00007550 Query: select count(*) from sysuser1 row in set (0.00 sec)
通过指定的Query_ID 来查询指定的sql语句的执行信息:
mysql> show profile for query 1;
+--------------------------------+----------+
| Status | Duration |+--------------------------------+----------+| starting | 0.000028 || checking query cache for query | 0.000008 || checking privileges on cached | 0.000009 || sending cached result to clien | 0.000023 || logging slow query | 0.000004 || cleaning up | 0.000003 |+--------------------------------+----------+6 rows in set (0.00 sec)
mysql> show profile cpu,block io for query 1;
+--------------------------------+----------+----------+------------+--------------+---------------+| Status | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |+--------------------------------+----------+----------+------------+--------------+---------------+| starting | 0.000028 | NULL | NULL | NULL | NULL || checking query cache for query | 0.000008 | NULL | NULL | NULL | NULL || checking privileges on cached | 0.000009 | NULL | NULL | NULL | NULL || sending cached result to clien | 0.000023 | NULL | NULL | NULL | NULL || logging slow query | 0.000004 | NULL | NULL | NULL | NULL || cleaning up | 0.000003 | NULL | NULL | NULL | NULL |+--------------------------------+----------+----------+------------+--------------+---------------+6 rows in set (0.00 sec)
如果不带for 参数则指列出最后一条语句的profile 信息:
mysql> show profile cpu,block io for query 1;+--------------------------------+----------+----------+------------+--------------+---------------+
| Status | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |+--------------------------------+----------+----------+------------+--------------+---------------+| starting | 0.000028 | NULL | NULL | NULL | NULL || checking query cache for query | 0.000008 | NULL | NULL | NULL | NULL || checking privileges on cached | 0.000009 | NULL | NULL | NULL | NULL || sending cached result to clien | 0.000023 | NULL | NULL | NULL | NULL || logging slow query | 0.000004 | NULL | NULL | NULL | NULL || cleaning up | 0.000003 | NULL | NULL | NULL | NULL |+--------------------------------+----------+----------+------------+--------------+---------------+6 rows in set (0.00 sec)关闭参数:
mysql> set profiling=0
+---------------+-------+
| Variable_name | Value |+---------------+-------+| profiling | OFF |+---------------+-------+1 row in set (0.00 sec)