mysql:慢查詢日誌

mysql:慢查詢日誌


對於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
這裏寫圖片描述

現在我們來查看慢查詢日誌

query

這個日誌比較簡單,英語好的人完全可以看懂,我個人認爲不需要解釋上面.
另外MySQL準備了分析工具mysqldumpslow;可以查閱[文章]這裏寫圖片描述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章