Mysql調(diào)優(yōu)之profile的使用方法
發(fā)表時(shí)間:2023-05-29 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]本篇文章給大家?guī)淼膬?nèi)容是關(guān)于Mysql調(diào)優(yōu)之profile的使用方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。在我們做mysql性能分析的時(shí)候,最常用的有三種方式:(1)慢查...
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于Mysql調(diào)優(yōu)之profile的使用方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。
在我們做mysql性能分析的時(shí)候,最常用的有三種方式:
(1)慢查詢 (分析出現(xiàn)出問題的sql)
(2)Explain (顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優(yōu)化的查詢語句)
(3)Profile(查詢到 SQL 會執(zhí)行多少時(shí)間, 并看出 CPU/Memory 使用量, 執(zhí)行過程中 Systemlock, Table lock 花多少時(shí)間等等.)
本章主要是對profile做簡單的概述,用來對某一條sql語句進(jìn)行性能分析。
Profiling是從 mysql5.0.3版本以后才開放的。但是在mysql5.7之后,profile信息將逐漸被廢棄,mysql推薦使用performance schema。
profile此工具可用來查詢SQL執(zhí)行狀態(tài),System lock和Table lock 花多少時(shí)間等等,對定位一條語句的I/O消耗和CPU消耗 非常重要。(SQL 語句執(zhí)行所消耗的最大兩部分資源就是IO和CPU)
profile工具使用
查看自己的mysql版本:
mysql> select version();
+------------+
version()
+------------+
5.6.35-log
+------------+
查看是否開啟profile功能(profiling=on代表開啟):
mysql> show variables like '%profil%';
+------------------------+-------+
Variable_name Value
+------------------------+-------+
have_profiling YES
profiling OFF
profiling_history_size 15
+------------------------+-------+
開啟profile:
mysql> set profile=1;
開啟profile之后,執(zhí)行要分析的sql語句:
mysql> select t1.*,t2.action from pre_forum_thread as t1
left join
(select a.* from pre_forum_threadmod as a,(select tid,max(dateline) as dateline from pre_forum_threadmod group by tid) as b
where a.tid=b.tid and a.dateline=b.dateline) as t2
on t1.tid=t2.tid
where t1.displayorder>=0 and t1.fid in (47,49) and t1.tid > 100318
and (t1.authorid =7683017 or t2.action<>'DWN' or t2.action is null )
order by t1.dateline desc limit 20;
查看生成的profile信息:
mysql> show profiles;
+----------+------------+--------------------------------------------------------------------------------------------------------+
Query_ID Duration Query
+----------+------------+--------------------------------------------------------------------------------------------------------+
1 1.37183777 select t1.*,t2.action from pre_forum_thread as t1
2 0.00078796 show columns from `bbs`.`t2`
3 0.00150425 show columns from `bbs`.`pre_forum_thread`
+----------+------------+--------------------------------------------------------------------------------------------------------+
獲取指定的query語句的開銷:
mysql> show profile for query 2;
+----------------------+----------+
Status Duration
+----------------------+----------+
starting 0.000147
checking permissions 0.000023
Opening tables 0.000047
init 0.000081
System lock 0.000031
optimizing 0.000034
statistics 0.001650
preparing 0.000046
executing 0.000018
Sending data 2.460588
end 0.000041
query end 0.000019
closing tables 0.000022
freeing items 0.000055
cleaning up 0.000085
+----------------------+----------+
關(guān)閉profile:
mysql> set profiling=0;
相關(guān)具體的參數(shù):
type:
ALL --顯示所有的開銷信息
BLOCK IO --顯示塊IO相關(guān)開銷
CONTEXT SWITCHES --上下文切換相關(guān)開銷
CPU --顯示CPU相關(guān)開銷信息
IPC --顯示發(fā)送和接收相關(guān)開銷信息
MEMORY --顯示內(nèi)存相關(guān)開銷信息
PAGE FAULTS --顯示頁面錯(cuò)誤相關(guān)開銷信息
SOURCE --顯示和Source_function,Source_file,Source_line相關(guān)的開銷信息
SWAPS --顯示交換次數(shù)相關(guān)開銷的信息
例如,想要查看cpu和io開銷可以執(zhí)行命令:
mysql> SHOW profile CPU,BLOCK IO FOR query 2;
總結(jié)
一般簡易的流程:
(1)set profiling=1; //打開profile分析
(2)run your sql1;
(3)run your sql2;
(4)show profiles; //查看sql1,sql2的語句分析
(5)SHOW profile CPU,BLOCK IO io FOR query 1; //查看CPU、IO消耗
(6)set profiling=0; //關(guān)閉profile分析
以上就是Mysql調(diào)優(yōu)之profile的使用方法的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。