對於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中響應時間超過閾值的sql語句,在很大程度上會影響資料庫整體的效能,是mysql優化的乙個重要方向。在58的雲db平台建設中,慢sql系統作為乙個非常重要功能模組,不僅是dba日常運維使用,我們也希望通過該功能可以協助開發人員更快速定位業...
mysql慢日誌時間 MySQL慢查詢日誌優化
一 慢查詢日誌概念 mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。long query time的預設值為10,意思是執行10s以上的語句。預設情況下,mys...
mysql 慢日誌 MYSQL慢查詢和日誌
一 簡介 開啟慢查詢日誌,可以讓mysql記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。二 引數說明 slow query log 慢查詢開啟狀態 slow query log file 慢查詢日誌存放的位置 這個目錄需要mysql的執行帳號的可寫許可權,一般...