show profile是由Jeremy Cole捐獻(xiàn)給MySQL社區(qū)版本的。默認(rèn)的是關(guān)閉的,但是會(huì)話級(jí)別可以開啟這個(gè)功能。開啟它可以讓MySQL收集在執(zhí)行語(yǔ)句的時(shí)候所使用的資源。為了統(tǒng)計(jì)報(bào)表,把profiling設(shè)為1
mysql> SET profiling = 1;
之后在運(yùn)行一個(gè)查詢
mysql> SELECT COUNT(DISTINCT actor.first_name) AS cnt_name, COUNT(*) AS cnt
-> FROM sakila.film_actor
-> INNER JOIN sakila.actor USING(actor_id)
-> GROUP BY sakila.film_actor.film_id
-> ORDER BY cnt_name DESC;
...
997 rows in set (0.03 sec)
這個(gè)執(zhí)行語(yǔ)句的剖析信息存儲(chǔ)在這個(gè)會(huì)話中。使用SHOW PROFILES進(jìn)行查看。
mysql> SHOW PROFILES\G
*************************** 1. row ***************************
Query_ID: 1
Duration: 0.02596900
Query: SELECT COUNT(DISTINCT actor.first_name) AS cnt_name,...
每行都是狀態(tài)變化的過(guò)程以及它們持續(xù)的時(shí)間。Status那一列和SHOW FULL PROCESSLIST的State應(yīng)該是一致的。
這個(gè)值是來(lái)自于thd->proc_info變量。因此你所查看的這個(gè)值是直接來(lái)自MySQL內(nèi)部的。盡管這些數(shù)值是比較直接易懂的,你也可以查看MySQL手冊(cè)。