一、是什麼:是mysql提供能夠用來分析當前會話中語句執行的資源消耗狀況。能夠用於SQL的調優的測量html
二、官網:http://dev.mysql.com/doc/refman/5.7/en/show-profile.htmlmysql
三、默認狀況下,參數處於關閉狀態,並保存最近15次的運行結果sql
四、分析步驟spa
(1)是否支持,看看當前的mysql版本是否支持3d
Show variables like 'profiling';
默認是關閉,使用前須要開啓code
(2)開啓功能,默認是關閉,使用前須要開啓htm
show variables like 'profiling';
set profiling=1;blog
(3)運行SQL 內存
select * from emp group by id%10 limit 150000;資源
select * from emp group by id%20 order by 5
(4)查看結果,show profiles;
(5)診斷SQL,show profile cpu,block io for query n (n爲上一步前面的問題SQL數字號碼);
參數備註
type:
| ALL --顯示全部的開銷信息
| BLOCK IO --顯示塊IO相關開銷
| CONTEXT SWITCHES --上下文切換相關開銷
| CPU --顯示CPU相關開銷信息
| IPC --顯示發送和接收相關開銷信息
| MEMORY --顯示內存相關開銷信息
| PAGE FAULTS --顯示頁面錯誤相關開銷信息
| SOURCE --顯示和Source_function,Source_file,Source_line相關的開銷信息
| SWAPS --顯示交換次數相關開銷的信息
(6)平常開發須要注意的結論
① converting HEAP to MyISAM 查詢結果太大,內存都不夠用了往磁盤上搬了。
② Creating tmp table 建立臨時表
拷貝數據到臨時表
用完再刪除
③ Copying to tmp table on disk 把內存中臨時表複製到磁盤,危險!!!
④ locked