1.首先打開mysql的命令窗口
2.把profile功能打開,該功能的作用就是記錄所有操作的性能統計,輸入命令如下:
SET PROFILING=1;
3. 運行需要分析的sql如:
select * from t_test;
可以再執行其他的sql
4.查詢目前記錄到的profile
SHOW PROFILES;
這時就會顯示出profile 記錄下來的記錄如下圖:
如上圖所示第一列查詢的生成的ID,第二列爲花費時間,第三列爲執行的腳本
5.查詢對應腳本的執行時間
SHOW PROFILE CPU,BLOCK IO FOR QUERY 1;
其中query 1 對應就是query_id 爲1 的執行腳本
對應的它的性能如下:
把sql 執行和個階段的時間花費列個清單,如圖上所示爲執行個查詢所經歷的階段有下面幾個
1.開始階段,這個階段就是準備執行的參數等
2.檢查用戶的執行權限
3.打開表
4.初始化
5.檢查系統鎖
6.優化腳本
7統計信息
8.準備階段-生成執行計劃
9.執行腳本
10.發送數據到客戶端
11.結束
12.查詢結束
13.關閉表
14.清除臨時數據
15。關閉表
16.釋放鎖
17。清理
這個過程只能說執行sql會包含的所有階段,各個階段所花費的時間,可以根據這些數據分析sql的性能慢在哪一塊,還可以對比同一個功能,不同sql實現時所產生的IO情況(第五六列Blocks_ops_in,Blocks_ops_out)。