MySQL高级show profile
生活随笔
收集整理的這篇文章主要介紹了
MySQL高级show profile
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
show profile分析SQL
Mysql從5.0.37版本開始增加了對 show profiles 和 show profile 語句的支持。show profiles 能夠在做SQL優化時幫助我們了解時間都耗費到哪里去了。
通過 have_profiling 參數,能夠看到當前MySQL是否支持profile:
默認profiling是關閉的,可以通過set語句在Session級別開啟profiling:
set profiling=1; //開啟profiling 開關;通過profile,我們能夠更清楚地了解SQL執行的過程。
首先,我們可以執行一系列的操作,如下圖所示:
show databases;use db01;show tables;select * from tb_item where id < 5;select count(*) from tb_item;執行完上述命令之后,再執行show profiles 指令, 來查看SQL語句執行的耗時:
通過show profile for query query_id 語句可以查看到該SQL執行過程中每個線程的狀態和消耗的時間:
TIP :Sending data 狀態表示MySQL線程開始訪問數據行并把結果返回給客戶端,而不僅僅是返回個客戶端。由于在Sending data狀態下,MySQL線程往往需要做大量的磁盤讀取操作,所以經常是整各查詢中耗時最長的狀態。?在獲取到最消耗時間的線程狀態后,MySQL支持進一步選擇all、cpu、block io 、context switch、page faults等明細類型類查看MySQL在使用什么資源上耗費了過高的時間。例如,選擇查看CPU的耗費時間 :
?
| Status | sql 語句執行的狀態 |
| Duration | sql 執行過程中每一個步驟的耗時 |
| CPU_user | 當前用戶占有的cpu |
| CPU_system | 系統占有的cpu |
總結
以上是生活随笔為你收集整理的MySQL高级show profile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: explain 之key rows ex
- 下一篇: linux cmake编译源码,linu