mysql之慢查詢日誌解析

2021-12-30 08:01:57 字數 1684 閱讀 2100

對於mysql效能調優,通常而言有兩種情況.其一是單條查詢語句有問題,導致大幅拖慢查詢速度,契爾氏伺服器出現問題,諸如記憶體耗盡網路異常磁碟耗盡等情況.這時候我們就需要去定位.在高效能mysql>一書中作者給出兩種技術來定位問題:

1 通過高頻率呼叫show global status/show processlist這兩類命令通過引數來觀察資料發生了上面.

2 來檢視慢查詢日誌資料庫吞吐量發生的變化

在這裡本文將對慢查詢日誌的使用進行一次實踐,用來學習慢查詢日誌的使用

預設情況下slow_query_log的值為off,表示慢查詢日誌是禁用的,可以通過設定slow_query_log的值來開啟,如下所示:

使用set global slow_query_log=1開啟了慢查詢日誌只對當前資料庫生效,mysql重啟後則會失效.只有通過修改配置檔案(通常是my.cnf),才能共永久儲存.通常情況下的除錯我推薦使用命令列來修改,這樣對於查詢更為簡單,在檢視問題之後也更容易容易關閉而不需要重啟伺服器.

由引數long_query_time,如果查詢比這個引數慢.則會被記錄在日誌中.預設情況下long_query_time的值為10秒,可以使用命令修改,也可以在my.cnf引數裡面修改.從mysql 5.1開始,long_query_time開始以微秒記錄sql語句執行時間,之前僅用秒為單位記錄.如果記錄到表裡面,只會記錄整數部分,不會記錄微秒部分.

同樣的這個引數可以通過查詢修改,也可以通過配置檔案修改.而查詢修改在重啟後會失效.

log_output 引數是指定日誌的儲存方式。log_output=』file』表示將日誌存入檔案,預設值是』file』。log_output=』table』表示將日誌存入資料庫,這樣日誌資訊就會被寫入到mysql.slow_log表中。mysql資料庫支援同時兩種日誌儲存方式,配置的時候以逗號隔開即可,如:log_output=』file,table』。日誌記錄到系統的專用日誌表中,要比記錄到檔案耗費更多的系統資源,因此對於需要啟用慢查詢日誌,又需要能夠獲得更高的系統效能,那麼建議優先記錄到檔案.

系統變數log-queries-not-using-indexes:未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。如果調優的話,建議開啟這個選項。另外,開啟了這個引數,其實使用full index scan的sql也會被記錄到慢查詢日誌。

如果你想查詢有多少條慢查詢記錄,可以使用系統狀態slow_queries

現在我們來檢視慢查詢日誌

這個日誌比較簡單,英語好的人完全可以看懂,我個人認為不需要解釋上面.

另外mysql準備了分析工具mysqldumpslow;可以查閱[文章]

通過慢查詢日誌我們就可以找到對已經的那些語句是慢的語句了,我們可以想辦法優化這些語句,或者乾脆通過去掉這些查詢.

mysql之慢查詢日誌

一 mysql的慢查詢日誌是mysql提供的用來記錄響應時間超過閾值的語句,預設情況下mysql沒有開啟慢查詢日誌,需要手動開啟,開啟慢查詢日誌對資料庫效能會有一點影響,所以在不調優的情況下不建議開啟慢查詢日誌功能 1 檢視是否開啟慢查詢日誌的命令 show variables like slow ...

MySQL之慢查詢日誌

預設情況下,mysql 資料庫沒有開啟慢查詢日誌,需要我們手動來設定這個引數 如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會將sql語句寫入日誌,因此或多或少帶來一定的效能影響。sql語句 說明show variables like slow query log 檢視慢查詢日誌是否...

MySQL之慢查詢日誌

慢日誌查詢 概述 在生產環境中,如果要手工分析日誌 查詢 分析sql,顯然是個體力活,mysql提供了日誌分析工具mysqlldumpslow 是什麼?mysql之慢查詢日誌 怎麼玩?mysql之慢查詢日誌 檢視命令 show variables like slow query log show v...