共計(jì) 1581 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
自動(dòng)寫(xiě)代碼機(jī)器人,免費(fèi)開(kāi)通
這篇文章主要介紹了 mysql 的慢查詢分析調(diào)優(yōu)工具 show profile 怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
show profile 也是 MySQL 服務(wù)自帶的分析調(diào)優(yōu)工具,不過(guò)這款更高級(jí),比較接近底層硬件參數(shù)的調(diào)優(yōu)。
查看 show profile 設(shè)置
show variables like profiling% // 默認(rèn)關(guān)閉,保存近 15 次的運(yùn)行結(jié)果
開(kāi)啟
set profiling = on;
查看最近 15 次的運(yùn)行結(jié)果
show profiles;
show warnings;// 可以顯示警告和報(bào)錯(cuò)的信息
診斷運(yùn)行的 SQL
命令:show profile cpu,block io for query query_id;
show profile cpu,block io for query 3;
通過(guò) Status 一列,可以看到整條 SQL 的運(yùn)行過(guò)程
1. starting // 開(kāi)始
2. checking permissions // 檢查權(quán)限
3. Opening tables // 打開(kāi)數(shù)據(jù)表
4. init // 初始化
5. System lock // 鎖機(jī)制
6. optimizing // 優(yōu)化器
7. statistics // 分析語(yǔ)法樹(shù)
8. prepareing // 預(yù)準(zhǔn)備
9. executing // 引擎執(zhí)行開(kāi)始
10. end // 引擎執(zhí)行結(jié)束
11. query end // 查詢結(jié)束
......
12. closing tables // 釋放數(shù)據(jù)表
13. freeing items // 釋放內(nèi)存
14. cleaning up // 徹底清理
Type:
ALL // 顯示索引的開(kāi)銷(xiāo)信息
BLOCK IO // 顯示塊 IO 相關(guān)開(kāi)銷(xiāo)
CONTEXT SWITCHES // 上下文切換相關(guān)開(kāi)銷(xiāo)
CPU // 顯示 CPU 相關(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)信息
SOURCE // 顯示和 source_function,source_file,source_line 相關(guān)的開(kāi)銷(xiāo)信息
SWAPS // 顯示交換次數(shù)相關(guān)開(kāi)銷(xiāo)的信息
如出現(xiàn)以下一種或者幾種情況,說(shuō)明 SQL 執(zhí)行性能極其低下,亟需優(yōu)化
* converting HEAP to MyISAM // 查詢結(jié)果太大,內(nèi)存都不夠用了往磁盤(pán)上搬了
* Creating tmp table // 創(chuàng)建臨時(shí)表:拷貝數(shù)據(jù)到臨時(shí)表,用完再刪
* Copying to tmp table on disk // 把內(nèi)存中臨時(shí)表復(fù)制到磁盤(pán),危險(xiǎn)
* locked // 出現(xiàn)死鎖
通過(guò)查詢數(shù)據(jù)表來(lái)診斷 SQL(第二種查詢方式)
select * from information_schema.profiling;
全局查詢?nèi)罩荆ǖ诙N SQL 診斷方式)
此方式診斷較簡(jiǎn)單(參數(shù)少,適合定位有問(wèn)題的 SQL),記錄到數(shù)據(jù)庫(kù)(建議只在測(cè)試庫(kù)環(huán)境進(jìn)行)
設(shè)置
方式 1: 命令行
1. set global general_log = 1;
2. set global log_output = TABLE
方式 2: 配置文件
* vim my.cnf
general_log =1
general_log_file = /path/logfile
log_output = FILE
* 重啟 MySQL 服務(wù)
診斷 SQL
select * from mysql.general_log;
感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“mysql 的慢查詢分析調(diào)優(yōu)工具 show profile 怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
向 AI 問(wèn)一下細(xì)節(jié)