Mysql調(diào)優(yōu)之profile的使用方法
發(fā)表時(shí)間:2023-05-29 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Mysql調(diào)優(yōu)之profile的使用方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。在我們做mysql性能分析的時(shí)候,最常用的有三種方式:(1)慢查...
本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Mysql調(diào)優(yōu)之profile的使用方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
在我們做mysql性能分析的時(shí)候,最常用的有三種方式:
(1)慢查詢 (分析出現(xiàn)出問(wèn)題的sql)
(2)Explain (顯示了mysql如何使用索引來(lái)處理select語(yǔ)句以及連接表?梢詭椭x擇更好的索引和寫出更優(yōu)化的查詢語(yǔ)句)
(3)Profile(查詢到 SQL 會(huì)執(zhí)行多少時(shí)間, 并看出 CPU/Memory 使用量, 執(zhí)行過(guò)程中 Systemlock, Table lock 花多少時(shí)間等等.)
本章主要是對(duì)profile做簡(jiǎn)單的概述,用來(lái)對(duì)某一條sql語(yǔ)句進(jìn)行性能分析。
Profiling是從 mysql5.0.3版本以后才開(kāi)放的。但是在mysql5.7之后,profile信息將逐漸被廢棄,mysql推薦使用performance schema。
profile此工具可用來(lái)查詢SQL執(zhí)行狀態(tài),System lock和Table lock 花多少時(shí)間等等,對(duì)定位一條語(yǔ)句的I/O消耗和CPU消耗 非常重要。(SQL 語(yǔ)句執(zhí)行所消耗的最大兩部分資源就是IO和CPU)
profile工具使用
查看自己的mysql版本:
mysql> select version();
+------------+
version()
+------------+
5.6.35-log
+------------+
查看是否開(kāi)啟profile功能(profiling=on代表開(kāi)啟):
mysql> show variables like '%profil%';
+------------------------+-------+
Variable_name Value
+------------------------+-------+
have_profiling YES
profiling OFF
profiling_history_size 15
+------------------------+-------+
開(kāi)啟profile:
mysql> set profile=1;
開(kāi)啟profile之后,執(zhí)行要分析的sql語(yǔ)句:
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語(yǔ)句的開(kāi)銷:
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 --顯示所有的開(kāi)銷信息
BLOCK IO --顯示塊IO相關(guān)開(kāi)銷
CONTEXT SWITCHES --上下文切換相關(guān)開(kāi)銷
CPU --顯示CPU相關(guān)開(kāi)銷信息
IPC --顯示發(fā)送和接收相關(guān)開(kāi)銷信息
MEMORY --顯示內(nèi)存相關(guān)開(kāi)銷信息
PAGE FAULTS --顯示頁(yè)面錯(cuò)誤相關(guān)開(kāi)銷信息
SOURCE --顯示和Source_function,Source_file,Source_line相關(guān)的開(kāi)銷信息
SWAPS --顯示交換次數(shù)相關(guān)開(kāi)銷的信息
例如,想要查看cpu和io開(kāi)銷可以執(zhí)行命令:
mysql> SHOW profile CPU,BLOCK IO FOR query 2;
總結(jié)
一般簡(jiǎn)易的流程:
(1)set profiling=1; //打開(kāi)profile分析
(2)run your sql1;
(3)run your sql2;
(4)show profiles; //查看sql1,sql2的語(yǔ)句分析
(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)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。