Show profiles是5.0.37之後才有的功能,是以我們需要確定版本是在5.0.37之後。
進入MySQL
通過mysql> Select version();
查詢目前MySQL版本号。
查詢版本号
檢視是否打開profiles功能,預設是關閉的(舉例):使用自己本地建立的資料庫。
mysql> show profiles;
顯示為空,說明profiles功能是關閉的。
檢視功能是否關閉
開啟開啟profile:mysql> set profiling=1;
執行兩條SQL語句:
EXPLAIN SELECT DISTINCT device_id FROM user_submit LIMIT 20;
SELECT DISTINCT device_id FROM user_submit;
執行SQL語句
執行show profiles:
執行show profiles
表中的Query_ID字段就是給show profile for query 當具體id的。
調整hostory大小:如果hostory比較小,有可能query不到。
SET profiling_history_size=100;
調整hostory
show profile for query 具體id;展示sql的所有執行階段,例如:鎖等待、執行、優化、發送資料、記憶體排序;
SQL所有執行階段
如果sending data比較大,說明發送資料慢,代表網絡IO有影響。
如果Copying to tmp table比較大,說明臨時表慢,可能原因distinct檢視會用到臨時表;
檢視cpu、記憶體和IO資訊:
mysql> show profile block io,cpu for query 2;
cpu、記憶體和io資訊
另外還可以看到memory,swaps,context switches,source 等資訊。