MySQL profiling的用法,mysqlprofiling
MySQL資料庫最常見的兩個瓶頸是CPU和I/O的瓶頸,CPU在飽和的時候一般發生在資料裝入記憶體或從磁碟上讀取資料時候。磁碟I/O瓶頸發生在裝入資料遠大於記憶體容量的時候,如果應用分布在網路上,那麼查詢量相當大的時候那麼平瓶頸就會出現在網路上,我們可以用mpstat, iostat, sar和vmstat來查看系統的效能狀態。今天我們不討論區伺服器硬體的效能瓶頸,只是談談MySQL系統本身,通常需要對資料庫進行分析,常見的分析手段有慢查詢日誌,EXPLAIN 分析查詢,profiling分析以及show命令查詢系統狀態及系統變數,通過定位分析效能的瓶頸,才能更好的最佳化資料庫系統的效能。
這個是一系列的文章,今天只談SHOW PROFILE Syntax。通過它我們可以清楚的知道某條Query的效能瓶頸到底在哪裡,是消耗的 CPU計算太多,還是需要的的 IO 操作太多?具體的做法如下:
1.開啟profiling參數
set profiling=1;
2.執行Query
select * from a;
3.擷取系統中儲存的所有 Query 的 profile 概要資訊
show profiles;
4.針對單個 Query 擷取詳細的 profile 資訊。
show profile all for query 1;
文法如下:
SHOW PROFILE [type [, type] ... ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]
type:
ALL:顯示所有的開銷資訊
| BLOCK IO:顯示塊IO相關開銷
| CONTEXT SWITCHES:環境切換相關開銷
| CPU:顯示使用者CPU時間、系統CPU時間
| IPC:顯示發送和接收相關開銷資訊
| MEMORY:目前沒有實現
| PAGE FAULTS:顯示分頁錯誤相關開銷資訊
| SOURCE:顯示和Source_function,Source_file,Source_line相關的開銷資訊
| SWAPS:顯示交換次數相關開銷的資訊
以上資訊也可以通過INFORMATION_SCHEMA.PROFILING表中的資訊來查看。
參考資料:
https://dev.mysql.com/doc/refman/5.7/en/show-profile.html
https://dev.mysql.com/doc/refman/5.7/en/profiling-table.html
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。