1. 程式人生 > 實用技巧 >MySQL高階學習之Show Profile

MySQL高階學習之Show Profile

前言:Show Profile是mysql提供的可以用來分析當前會話sql語句執行的資源消耗情況的工具,可用於sql調優的測量。預設情況下處於關閉狀態,並儲存最近15次的執行結果。


1.分析步驟

#1.開啟Show Profile功能,預設該功能是關閉的,使用前需開啟。

#2.根據MySQL高階知識(十)——批量插入資料指令碼中的資料指令碼向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;

#3.通過show profiles檢視結果。

#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的常用查詢引數。

①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

如果在show profile診斷結果中出現了以上4條結果中的任何一條,則sql語句需要優化。

2.總結

#1.show profile預設是關閉的,並且開啟後只存活於當前會話,也就說每次使用前都需要開啟

#2.通過show profiles檢視sql語句的耗時時間,然後通過show profile命令對耗時時間長的sql語句進行診斷。

#3.注意show profile診斷結果中出現相關欄位的含義,判斷是否需要優化sql語句。

#4.可更多的關注MySQL官方文件,獲取更多的知識。



轉載於:MySQL高階知識(十一)——Show Profile