前言:Show Profile是mysql提供的能夠用來分析當前會話中sql語句執行的資源消耗狀況的工具,可用於sql調優的測量。默認狀況下處於關閉狀態,並保存最近15次的運行結果。html
#1.開啓Show Profile功能,默認該功能是關閉的,使用前需開啓。mysql
#2.根據MySQL高級知識(十)——批量插入數據腳本中的數據腳本向tb_emp_bigdata表中插入50w條數據。而後執行以下查詢語句:sql
select *from tb_emp_bigdata group by id%10 limit 150000; select *from tb_emp_bigdata group by id%20 order by 5;
#3.經過show profiles查看結果。windows
#4.使用show profile對sql語句進行診斷。工具
show profile cpu,block io for query Query_ID;/*Query_ID爲#3步驟中show profiles列表中的Query_ID*/
好比執行:show profile cpu,block io for query 15;優化
#5.show profile的經常使用查詢參數。spa
①ALL:顯示全部的開銷信息。code
②BLOCK IO:顯示塊IO開銷。htm
③CONTEXT SWITCHES:上下文切換開銷。blog
④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。
若是在show profile診斷結果中出現了以上4條結果中的任何一條,則sql語句須要優化。
#1.show profile默認是關閉的,而且開啓後只存活於當前會話,也就說每次使用前都須要開啓。
#2.經過show profiles查看sql語句的耗時時間,而後經過show profile命令對耗時時間長的sql語句進行診斷。
#3.注意show profile診斷結果中出現相關字段的含義,判斷是否須要優化sql語句。
#4.可更多的關注MySQL官方文檔,獲取更多的知識。
by Shawn Chen,2018.6.27日,下午。