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