mysql show profiles 使用分析sql 性能

Show profiles是5.0.37之後添加的,要想使用此功能,要確保版本在5.0.37之後。

查看一下我的數據庫版本

MySQL> Select  version();

+---------------------+

| version()           |

+---------------------+

| 5.0.82-community-nt |

+---------------------+

1 row in set (0.00 sec)

版本是支持show profiles功能的。接下來進入mysql性能跟蹤診斷的世界

查看是否打開了profiles功能,默認是關閉的

mysql> use test;

Database changed

mysql> show profiles;

Empty set (0.00 sec)

顯示爲空,說明profiles功能是關閉的。下面開啓

mysql> set profiling=1;

Query OK, 0 rows affected (0.00 sec)

執行下面的查詢

mysql> explain select distinct player_idfrom task limit 20;

mysql> select distinct player_id from task ;

然後執行 show profiles

mysql> show profiles;

+----------+------------+------------------------------------------------------+

 

| Query_ID | Duration   | Query                                               |

 

+----------+------------+------------------------------------------------------+

 

|       1 | 0.00035225 | explain select distinct player_id from task limit 20 |

 

|       2 | 1.91772775 | select distinct player_id from task                  |

 

+----------+------------+------------------------------------------------------+

此時可以看到執行select distinct player_id from task 用了1.91772775秒的時間

根據query_id 查看某個查詢的詳細時間耗費

mysql> show profile for query 2;

+----------------------+----------+

| Status               | Duration |

+----------------------+----------+

| starting             | 0.000052 |

| Opening tables       | 0.000009 |

| System lock          | 0.000003 |

| Table lock           | 0.000007 |

| init                 | 0.000013 |

| optimizing           | 0.000003 |

| statistics           | 0.000009 |

| preparing            | 0.000008 |

| Creating tmp table   | 0.000074 |

| executing            | 0.000002 |

| Copying to tmp table |1.916551 |

| Sending data         | 0.000667 |

| end                  | 0.000004 |

| removing tmp table   | 0.000065 |

| end                  | 0.000002 |

| end                  | 0.000002 |

| query end            | 0.000003 |

| freeing items        | 0.000245 |

| closing tables       | 0.000006 |

| logging slow query   | 0.000002 |

| cleaning up          | 0.000003 |

+----------------------+----------+

可以看到紅色字體部分耗費了大量時間,這是因爲distinct查看會用到臨時表

那麼可不可以查看佔用cpu、 io等信息呢

 mysql> show profile block io,cpu for query2;

+----------------------+----------+----------+------------+--------------+------

---------+

| Status               | Duration | CPU_user |CPU_system | Block_ops_in | Block

_ops_out |

+----------------------+----------+----------+------------+--------------+------

---------+

| starting             | 0.000052 |     NULL |       NULL |         NULL |

   NULL |

| Opening tables       | 0.000009 |     NULL |       NULL |         NULL |

   NULL |

| System lock          | 0.000003 |     NULL |       NULL |         NULL |

   NULL |

| Table lock           | 0.000007 |     NULL |       NULL |         NULL |

   NULL |

| init                 | 0.000013 |     NULL |       NULL |         NULL |

   NULL |

| optimizing           | 0.000003 |     NULL |       NULL |         NULL |

   NULL |

| statistics           | 0.000009 |     NULL |       NULL |         NULL |

   NULL |

| preparing            | 0.000008 |     NULL |       NULL |        NULL |

   NULL |

| Creating tmp table   | 0.000074 |     NULL |       NULL |         NULL |

   NULL |

| executing            | 0.000002 |     NULL |       NULL |         NULL |

   NULL |

| Copying to tmp table | 1.916551 |     NULL |       NULL |        NULL |

   NULL |

| Sending data         | 0.000667 |     NULL |       NULL |         NULL |

   NULL |

| end                  | 0.000004 |     NULL |       NULL |         NULL |

   NULL |

| removing tmp table   | 0.000065 |     NULL |       NULL |         NULL |

   NULL |

| end                  | 0.000002 |     NULL |       NULL |         NULL |

   NULL |

| end                  | 0.000002 |     NULL |       NULL |         NULL |

   NULL |

| query end            | 0.000003 |     NULL |       NULL |         NULL |

   NULL |

| freeing items        | 0.000245 |     NULL |       NULL |         NULL |

   NULL |

| closing tables       | 0.000006 |     NULL |       NULL |         NULL |

   NULL |

| logging slow query   | 0.000002 |     NULL |       NULL |         NULL |

   NULL |

| cleaning up          | 0.000003 |     NULL |       NULL |         NULL |

   NULL |

+----------------------+----------+----------+------------+--------------+------

另外還可以看到memory,swaps,context switches,source 等信息

具體信息可以參考http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html

發佈了5 篇原創文章 · 獲贊 11 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章