參考 針對mysql的優化,mysql提供了慢查詢日誌的支持。mysql的慢查詢是mysql提供的一種日誌記錄,它用來記錄mysql中響應時間超過閥值的sql語句,某個sql運行時間如果超過設置的閥值(long_query_time),就會被記錄到慢查詢日誌中。閥值預設值是10s,預設情況下,mys ...
針對mysql的優化,mysql提供了慢查詢日誌的支持。mysql的慢查詢是mysql提供的一種日誌記錄,它用來記錄mysql中響應時間超過閥值的sql語句,某個sql運行時間如果超過設置的閥值(long_query_time),就會被記錄到慢查詢日誌中。閥值預設值是10s,預設情況下,mysql資料庫並不會啟動慢查詢日誌,需要手動來設置這個參數(slow_query_log)。慢查詢日誌支持將日誌寫入文件,也支持將日誌寫入資料庫表。一般不建議開啟慢查詢日誌,因為慢查詢日誌或多或少帶來一定的性能影響。
慢查詢日誌相關參數
1 slow_query_log :是否開啟慢查詢日誌,1表示開啟,0表示關閉。 2 log-slow-queries :舊版(5.6以下版本)MySQL資料庫慢查詢日誌存儲路徑。可以不設置該參數,系統則會預設給一個預設的文件host_name-slow.log 3 slow-query-log-file:新版(5.6及以上版本)MySQL資料庫慢查詢日誌存儲路徑。可以不設置該參數,系統則會預設給一個預設的文件host_name-slow.log 4 long_query_time :慢查詢閾值,當查詢時間多於設定的閾值時,記錄日誌。 5 log_queries_not_using_indexes:未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。 6 log_output:日誌存儲方式。log_output='FILE'表示將日誌存入文件,預設值是'FILE'。log_output='TABLE'表示將日誌存入資料庫,這樣日誌信息就會被寫入到mysql.slow_log表中。MySQL數據<br>庫支持同時兩種日誌存儲方式,配置的時候以逗號隔開即可,如:log_output='FILE,TABLE'。日誌記錄到系統的專用日誌表中,要比記錄到文件耗費更多的系統資源,因此對於需要啟用慢查詢日誌,又需<br>要能夠獲得更高的系統性能,那麼建議優先記錄到文件。View Code
使用set命令開啟慢查詢日誌,mysql重啟之後會失效,如果要永久生效,將配置寫入到mysql的配置文件my.cnf或my.ini文件中
開啟慢查詢日誌之後,執行時間超過閥值的sql會被記錄下來,在mysql5.1之前,long_query_time存的是整數,5.1開始,long_query_time以微妙記錄sql運行時間
將閥值由10s修改為2.13s
log_output參數指定日誌的存儲方式,FILE表示將日誌存入文件,預設值是FILE。TABLE表示將日誌存入資料庫,這樣日誌信息會被寫入到mysql.slow_log表中。mysql資料庫支持同時兩種日誌方式記錄,配置的時候用逗號分隔即可。日誌記錄到系統的專用日誌表中要比記錄到文件耗費更多的系統資源,對於慢查詢日誌,建議優先記錄到文件中。
將日誌存儲方式修改為同時支持兩種存儲方式
慢查詢日誌信息
文件
系統表
系統變數log_slow_admin_statements表示是否將慢管理語句比如analyze table和alter table等計入慢查詢日誌
想查詢有多少條慢查詢記錄,可以使用系統變數
分析慢查詢日誌如果單純去看,很耗費時間,效率不高,可以使用mysqldumpslow或pt_query_digest工具,具體參考