1. 程式人生 > >mysql 查詢優化 ~ 善用profie利器

mysql 查詢優化 ~ 善用profie利器

發送 ems ops nor 排序 ring free query exec

一 簡介:利用profile分析慢語句的過程有助於我們進行語句的優化

二 執行過程
set profiling=1;
set profiling=0;
2 執行sql
3 查看過程消耗

三 結果

1 查看執行過程耗時
SHOW profile FOR query 1
checking permissions:檢查權限
Opening tables:打開表
init : 初始化
System lock :系統鎖
optimizing : 優化
statistics : 統計
preparing :準備
executing :執行
Sending data :發送數據
Sorting result :排序
end :結束
query end :查詢 結束
closing tables : 關閉表 /去除TMP 表
freeing items : 釋放物品
cleaning up :清理
值得關註的值 1 sending data 2 Sorting result 3 Opening tables 以上所有的值並不是都會出現,這點要註意
2 查看資源消耗
SHOW profile all FOR query 2
"Duration": 持續時間
"CPU_user": cpu用戶
"CPU_system": cpu系統
"Context_voluntary":上下文主動切換
"Context_involuntary": 上下文被動切換
"Block_ops_in": 阻塞的輸入操作
"Block_ops_out": 阻塞的輸出操作
"Page_faults_major": 主分頁錯誤
"Page_faults_minor": 次分頁錯誤
值得關註的值 1 CPU相關值 2 Context 相關值 3 Block相關值
5 表查詢
SELECT STATE, FORMAT(DURATION, 6) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 1 ORDER BY SEQ;

mysql 查詢優化 ~ 善用profie利器