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官方文檔,獲取更多的知識。


by Shawn Chen,2018.6.27日,下午。


相關內容

MySQL高級知識系列目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM