MySQL profiling的使用

在本章第一節中咱們還提到過經過 Query Profiler 來定位一條 Query 的性能瓶頸,這裏咱們再詳細介紹一下 Profiling 的用途及使用方法。 性能優化


要想優化一條 Query,咱們就須要清楚的知道這條 Query 的性能瓶頸到底在哪裏,是消耗的 CPU計算太多,仍是須要的的 IO 操做太多?要想可以清楚的瞭解這些信息,在 MySQL 5.0 和 MySQL 5.1正式版中已經能夠很是容易作到了,那就是經過 Query Profiler 功能。 架構


MySQL 的 Query Profiler 是一個使用很是方便的 Query 診斷分析工具,經過該工具能夠獲取一條Query 在整個執行過程當中多種資源的消耗狀況,如 CPU,IO,IPC,SWAP 等,以及發生的 PAGE FAULTS,CONTEXT SWITCHE 等等,同時還能獲得該 Query 執行過程當中 MySQL 所調用的各個函數在源文件中的位置。 函數

下面咱們看看 Query Profiler 的具體用法。 工具

一、 開啓 profiling 參數 性能

root@localhost : (none) 10:53:11> set profiling=1; Query OK, 0 rows affected (0.00 sec)

經過執行 「set profiling」命令,能夠開啓關閉 Query Profiler 功能。 測試


二、 執行 Query 優化

複製代碼
... ... root@localhost : test 07:43:18> select status,count(*) -> from test_profiling group by status; +----------------+----------+
| status | count(*) |
+----------------+----------+
| st_xxx1 | 27 |
| st_xxx2 | 6666 |
| st_xxx3 | 292887 |
| st_xxx4 | 15 |
+----------------+----------+ 5 rows in set (1.11 sec) ... ...
複製代碼

在開啓 Query Profiler 功能以後,MySQL 就會自動記錄全部執行的 Query 的 profile 信息了。 spa


三、獲取系統中保存的全部 Query 的 profile 概要信息 架構設計

複製代碼
root@localhost : test 07:47:35> show profiles; +----------+------------+------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+------------------------------------------------------------+
| 1 | 0.00183100 | show databases |
| 2 | 0.00007000 | SELECT DATABASE() |
| 3 | 0.00099300 | desc test |
| 4 | 0.00048800 | show tables |
| 5 | 0.00430400 | desc test_profiling |
| 6 | 1.90115800 | select status,count(*) from test_profiling group by status |
+----------+------------+------------------------------------------------------------+ 3 rows in set (0.00 sec)
複製代碼

經過執行 「SHOW PROFILE」 命令獲取當前系統中保存的多個 Query 的 profile 的概要信息。 設計


四、針對單個 Query 獲取詳細的 profile 信息。


在獲取到概要信息以後,咱們就能夠根據概要信息中的 Query_ID 來獲取某個 Query 在執行過程當中

詳細的 profile 信息了,具體操做以下:


上面的例子中是獲取 CPU 和 Block IO 的消耗,很是清晰,對於定位性能瓶頸很是適用。但願獲得取其餘的信息,均可以經過執行 「SHOW PROFILE *** FOR QUERY n」 來獲取,各位讀者朋友能夠自行測試熟悉。

轉自 《MySQL性能優化與架構設計》

相關文章
相關標籤/搜索