mysql 慢日誌查詢

2022-10-09 22:00:22 字數 1693 閱讀 8522

對於sql和索引的優化問題,我們會使用explain去分析sql語句。但是真正的企業級專案有成千上萬條sql,我們不可能從頭開始一條一條explain去分析。我們從什麼地方可以獲取那些執行時間長,耗效能的sql??

我們可以開啟慢查詢日誌

根據具體的業務和併發量來預估乙個時間上限(20ms、100ms),設定好後開啟業務,壓測後開啟慢查詢日誌,就會看到超過執行時間的sql,然後使用explain分析這些耗時的sql語句

步驟如下:

mysql可以設定慢查詢日誌,當sql執行的時間超過我們設定的時間,那麼這些sql就會被記錄在慢查詢日誌當中,然後我們通過檢視日誌,用explain分析這些sql的執行計畫,來判定為什麼效率低下,是沒有使用到索引?還是索引本身建立的有問題?或者是索引使用到了,但是由於表的資料量太大,花費的時間就是很長,那麼此時我們可以把錶分成多個小表等。

(mysql定義的很多的全域性的開關,都是在全域性變數中儲存,可以用show/set variables檢視或者設定全域性變數的值)

慢查詢日誌開關預設是關閉的

慢查詢日誌的路徑:預設在/var/lib/mysql/下

慢查詢日誌記錄了包含所有執行時間超過引數long_query_time(單位:秒)所設定值的 sql語句的日誌,在mysql上用命令可以檢視,如下:

這個值是可以修改的:

在開啟慢查詢日誌開關的時候,報錯表示slow_query_log是乙個global的變數(也有只影響當前session的變數,如:long_query_time 、profiling),修改後會影響所有的session,即影響所有正在訪問當前mysql server的客戶端。

開啟慢查詢日誌開關成功!

檢視另乙個session。

發現還是預設的10s,故long_query_time只影響當前session。

做了整表的搜尋,把主鍵索引樹整個掃了一遍。

mysql一般只顯示小數點後兩位的時間

開啟profiling開關,顯示更詳細的時間

沒有報錯,說明profiling變數只影響當前session

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的執行帳號的可寫許可權,一般...