mysql中profile的使用

mysql 的 sql 性能分析器主要用途是显示 sql 执行的整个过程中各项资源的使用情况。分析器可以更好的展示出不良 SQL 的性能问题所在。

  首先在5.5中已经可以使用了,默认是关闭的,查看是否打开:
1) 开启
   mysql> SET profiling=1;或 SET profiling=on;

2)
用法
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

SHOW PROFILES显示最近发给服务器的多条语句,条数根据会话变量profiling_history_size定义,默认是15,最大值为100。设为0等价于关闭分析功能。

SHOW PROFILE FOR QUERY n,这里的n就是对应SHOW PROFILES输出中的Query_ID。


例如:

   mysql> show profiles;
+----------+-------------+---------------------------------------+
| Query_ID | Duration    | Query                                 |
+----------+-------------+---------------------------------------+
|        1 |  0.00037700 | alter table table1 drop column c3 int |
|        2 | 70.37123800 | alter table table1 drop column c3

  则:
  mysql> SHOW PROFILE FOR QUERY 2;  #查看alter table table1 drop column c3的分析

然后显示一大堆的信息,如:
Status                       | Duration  |
+------------------------------+-----------+
| starting                     |  0.000183 |
| checking permissions         |  0.000057 |
| checking permissions         |  0.000059 |
| init                         |  0.000060 |
| Opening tables               |  0.000071 |
| System lock                  |  0.000062 |
| setup                        |  0.000080 |
| creating table               |  0.005052 |
| After create                 |  0.000220 |
| copy to tmp table            |  0.000244 |
| rename result table          | 70.364027 |
| end                          |  0.000575 |
| Waiting for query cache lock |  0.000062 |
| end                          |  0.000075 |
| query end                    |  0.000057 |
| closing tables               |  0.000061 |
| freeing items                |  0.000080 |
| logging slow query           |  0.000056 |
| logging slow query           |  0.000098 |
| cleaning up                  |  0.000059 |
+------------------------------+-----------+
20 rows in set (0.00 sec)

  ype是可选的,取值范围可以如下:

ALL 显示所有性能信息
BLOCK IO 显示块IO操作的次数
CONTEXT SWITCHES 显示上下文切换次数,不管是主动还是被动
CPU 显示用户CPU时间、系统CPU时间
IPC 显示发送和接收的消息数量
MEMORY [暂未实现]
PAGE FAULTS 显示页错误数量
SOURCE 显示源码中的函数名称与位置
SWAPS 显示SWAP的次数

mysql> show profile cpu for query 2;

 

猜你喜欢

转载自jackyrong.iteye.com/blog/2207550