前言:Show Profile是mysql提供的可以用來分析當前會話中sql語句執(zhí)行的資源消耗情況的工具,可用于sql調優(yōu)的測量。默認情況下處于關閉狀態(tài),并保存最近15次的運行結果。
1.分析步驟
-
1.開啟Show Profile功能,默認該功能是關閉的,使用前需開啟。
image 2.根據(jù)MySQL高級知識(十)——批量插入數(shù)據(jù)腳本中的數(shù)據(jù)腳本向tb_emp_bigdata表中插入50w條數(shù)據(jù)。然后執(zhí)行如下查詢語句:
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*/
比如執(zhí)行:show profile cpu,block io for query 15;

5.show profile的常用查詢參數(shù)。
①ALL:顯示所有的開銷信息。
②BLOCK IO:顯示塊IO開銷。
③CONTEXT SWITCHES:上下文切換開銷。
④CPU:顯示CPU開銷信息。
⑤IPC:顯示發(fā)送和接收開銷信息。
⑥MEMORY:顯示內存開銷信息。
⑦PAGE FAULTS:顯示頁面錯誤開銷信息。
⑧SOURCE:顯示和Source_function,Source_file,Source_line相關的開銷信息。
⑨SWAPS:顯示交換次數(shù)開銷信息。6.日常開發(fā)需注意的結論。
①converting HEAP to MyISAM:查詢結果太大,內存不夠,數(shù)據(jù)往磁盤上搬了。
②Creating tmp table:創(chuàng)建臨時表。先拷貝數(shù)據(jù)到臨時表,用完后再刪除臨時表。
③Copying to tmp table on disk:把內存中臨時表復制到磁盤上,危險?。?!
④locked。
如果在show profile診斷結果中出現(xiàn)了以上4條結果中的任何一條,則sql語句需要優(yōu)化。
2.總結
1.show profile默認是關閉的,并且開啟后只存活于當前會話,也就說每次使用前都需要開啟。
2.通過show profiles查看sql語句的耗時時間,然后通過show profile命令對耗時時間長的sql語句進行診斷。
3.注意show profile診斷結果中出現(xiàn)相關字段的含義,判斷是否需要優(yōu)化sql語句。
4.可更多的關注MySQL官方文檔,獲取更多的知識。
