Show Profile分析sql語句的資源消耗
阿新 • • 發佈:2020-09-19
Show Profile是mysql提供的可以用來分析當前會話中sql語句執行的資源消耗情況的工具,可用於sql調優的測量。預設情況下處於關閉狀態,並儲存最近15次的執行結果。
分析步驟
#開啟Show Profile功能,預設該功能是關閉的,使用前需開啟
#插入測試資料
向tb_emp_bigdata表中插入50w條資料。然後執行如下查詢語句:
select *from tb_emp_bigdata group by id%10 limit 150000; select *from tb_emp_bigdata group by id%20 order by 5;
#通過show profiles檢視結果
#使用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;
#show profile的常用查詢引數
① ALL:顯示所有的開銷資訊。
② BLOCK IO:顯示塊IO開銷。
③ CONTEXT SWITCHES:上下文切換開銷。
④ CPU:顯示CPU開銷資訊。
⑤ IPC:顯示傳送和接收開銷資訊。
⑥ MEMORY:顯示記憶體開銷資訊。
⑦ PAGE FAULTS:顯示頁面錯誤開銷資訊。
⑧ SOURCE:顯示和Source_function,Source_file,Source_line相關的開銷資訊。
⑨ SWAPS:顯示交換次數開銷資訊。
#日常開發需注意
① converting HEAP to MyISAM:查詢結果太大,記憶體不夠,資料往磁碟上搬了。
② Creating tmp table:建立臨時表。先拷貝資料到臨時表,用完後再刪除臨時表。
③ Copying to tmp table on disk:把記憶體中臨時表複製到磁碟上,危險!!!
④ locked。
如果在show profile診斷結果中出現了以上4條結果中的任何一條,則sql語句需要優化。