日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

MySQL show profile

 貪挽懶月 2022-06-20 發(fā)布于廣東

1. 是什么?

是MySQL提供的可以用來(lái)分析當(dāng)前會(huì)話中語(yǔ)句執(zhí)行的資源消耗情況的工具,可以用于sql調(diào)優(yōu)的測(cè)量。默認(rèn)是處于關(guān)閉狀態(tài)的,會(huì)保存最近15次的運(yùn)行結(jié)果。

2. 查看狀態(tài):

執(zhí)行如下命令即可查看profile的狀態(tài):

show variables like 'profiling';
執(zhí)行結(jié)果

可以看到,現(xiàn)在是關(guān)閉的。

3. 開(kāi)啟功能:

可以執(zhí)行如下語(yǔ)句將其開(kāi)啟:

set profiling = 'on';

4. 運(yùn)行sql:

因?yàn)樯厦嫖覀円呀?jīng)開(kāi)啟了profile,所以執(zhí)行的sql都會(huì)被記錄到相關(guān)文件中,下面我們隨便執(zhí)行幾段sql。

select * from emp;
select * from dept;
select * from emp group by id%10 limit 150000;
# order by 5表示按照第五個(gè)字段排序
select * from emp group by id%20 order by 5;

5. show profile:

執(zhí)行了sql之后,來(lái)查看show profile的結(jié)果:

show profiles;
執(zhí)行結(jié)果

查出來(lái)可以看到,執(zhí)行過(guò)的sql這里都有記錄,前面有對(duì)應(yīng)的id。然后我們可以根據(jù)id,查出該條sql執(zhí)行時(shí)的cpu、io等情況,比如我要查看id為14的這條sql執(zhí)行情況,那么就執(zhí)行:

show profile cpu, block io for query 14;
執(zhí)行結(jié)果

可以看到,查出來(lái)的結(jié)果就涵蓋了sql執(zhí)行過(guò)程中的整個(gè)生命周期,從校驗(yàn)權(quán)限、打開(kāi)表開(kāi)始,一直到查詢結(jié)束,cleaning up。每個(gè)過(guò)程的cpu和io情況都對(duì)應(yīng)的展示出來(lái)了。上面我們查詢的字段是cpu和block io,那還有其他的嗎?當(dāng)然有,如下表:

columndescription
all所有的開(kāi)銷(xiāo)信息
block io塊io相關(guān)開(kāi)銷(xiāo)信息
context switches上下文切換相關(guān)開(kāi)銷(xiāo)信息
cpucpu相關(guān)開(kāi)銷(xiāo)信息
ipc發(fā)送和接收相關(guān)開(kāi)銷(xiāo)信息
memory內(nèi)存相關(guān)開(kāi)銷(xiāo)信息
page faults頁(yè)面錯(cuò)誤相關(guān)開(kāi)銷(xiāo)信息
sourcesource_function,source_file,source_line相關(guān)開(kāi)銷(xiāo)信息
swaps交換次數(shù)相關(guān)開(kāi)銷(xiāo)信息

查出來(lái)之后,我們要怎么知道生命周期中的哪個(gè)步驟有貓病呢?主要觀察如下四個(gè):

  • converting heap to MyISAM是查詢出來(lái)的結(jié)果集太大,內(nèi)存不夠用
  • creating temp table是創(chuàng)建了臨時(shí)表,也非常耗時(shí)
  • copying to temp table on disk是把內(nèi)存中的臨時(shí)表復(fù)制到了磁盤(pán)中,特別耗時(shí)
  • locked是表被鎖了

如果查出來(lái)的status列包含了上述四個(gè)中的一個(gè),都是會(huì)拖慢sql的執(zhí)行速度的。

6. 全局查詢?nèi)罩荆?/strong>

這個(gè)主要是用于開(kāi)發(fā)、測(cè)試環(huán)境用來(lái)排查問(wèn)題的,永遠(yuǎn)不要在生產(chǎn)環(huán)境中開(kāi)啟此功能,因?yàn)槿罩緯?huì)非常非常多。

啟用方式有兩種:

  • 修改my.cnf,添加如下配置:
# 開(kāi)啟
general_log=1
# 日志文件路徑
general_log_file=/path/logfile
# 輸出格式
log_output=FILE
  • 用sql語(yǔ)句開(kāi)啟:
set global general_log=1;
set global log_output='TABLE';

執(zhí)行完之后,此后所執(zhí)行的sql都會(huì)保存到mysql庫(kù)的general_log表里。


掃描二維碼

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多