天天看點

MySQL通過show profile分析檢視SQL執行耗時

作者:貴哥說Java創業

通過show profile語句,可以檢視正在執行的SQL以及相應的耗時情況。讓我們能夠更清楚地了解SQL執行的過程。常用于了解資料庫伺服器的性能情況。

通過hava_profiling參數,能夠看到目前MySQL是否支援profile。

SELECT @@have_profiling           
MySQL通過show profile分析檢視SQL執行耗時

預設profiling是關閉的,可以通過set語句在Session級别開啟profiling。

set profiling=1           

執行一個count(*)查詢。

SELECT count(*) from payment           

執行完畢後,通過show profiles語句檢視SQL的query ID。

show profiles;           
MySQL通過show profile分析檢視SQL執行耗時

通過show profile for query 語句檢視執行過程中線程的每個狀态和消耗的時間。

show profile for query 3           
MySQL通過show profile分析檢視SQL執行耗時

在擷取到最消耗時間的線程狀态後,MySQL支援進一步選擇all、cpu、block io、context switch、page faults等明細類型來檢視MySQL在使用什麼資源上耗費了過高的時間。例如 檢視 cpu耗費時間:

MySQL通過show profile分析檢視SQL執行耗時

show profile能夠在做SQL優化時幫助我們了解時間都耗費到哪裡去,MySQL5.6則可以通過trace檔案進一步向我們展示優化器是如何選擇執行計劃的。trace放到一篇講解。