慢查詢日誌概念:
mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long_query_time值的sql,則會被記錄到慢查詢日誌中。long_query_time的預設值為10,意思是執行10s以上的語句。預設情況下,mysql資料庫並不啟動慢查詢日誌,需要我們手動來設定這個引數,當然,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會或多或少帶來一定的效能影響。慢查詢日誌支援將日誌記錄寫入檔案,也支援將日誌記錄寫入資料庫表。
檢視慢日誌命令:show variables like '%quer%';
這裡我們記住重要的幾條就可以了
long_query_time : 設定慢查詢的閥值,超出次設定值的sql即被記錄到慢查詢日誌,預設值為10s
slow_query_log : 指定是否開啟慢查詢日誌
log_slow_queries : 指定是否開啟慢查詢日誌(該引數要被slow_query_log取代,做相容性保留)
slow_query_log_file : 指定慢日誌檔案存放位置,可以為空,系統會給乙個預設的檔案host_name-slow.log
log_queries_not_using_indexes: 不使用索引的慢查詢日誌是否記錄到索引
慢日誌預設是關閉的,開啟慢日誌:set global slow_query_log=on; 再來檢視
設定sql的慢日誌記錄時時間,我們預設的時間是10s,這裡我們設定為1s:set global long_query_time=1;
這裡我們會發現值並沒有變,這裡我們需要重新連線一下資料庫才行。應為這樣設定的只能用於當前資料庫還沒重啟後關閉時。如果你重啟了資料庫。當前設定會還原的。當然你也可以直接修改配置檔案。讓它永久生效。這裡我們只做演示,就不修改配置檔案了。用客戶端重新連線再來看
接下來我們具體看看使用慢日誌的好處,我這裡有一張user表,裡面有830208條資料。我們來製造一些慢日誌。
這裡我通過username倒序查詢,可以看到花費了6.027秒。
這個時間已經超過了我們慢日誌記錄的時間了。我們設定的是sql超過1s就記錄sql。我們去看看慢日誌記錄的檔案裡面是否有記錄。
我的路徑是在:c:\programdata\mysql\mysql server 5.1\data\7mpg90blm277byq-xly-slow.log 。根據這個目錄去找就可以啦。注意c:\programdata目錄是隱藏檔案哦!
再7mpg90blm277byq-xly-slow.log檔案中的最後一行可以看到剛才查詢的sql 。實際花費的時間為9秒多。比我們執行時看到的還有久一點。
這就是我們使用慢日誌的好處。可以記錄我們查詢時間較長的sql。方便我們優化。
接下來我們對這條語句進行優化,怎麼優化呢?我們可以加入索引。當讓所有有很多種。我們就預設username欄位沒重複。這裡我設定為唯一索引。
加上索引後我們再來查詢看看
只花費了1s多點。我們再看看慢日誌。也是1s多。大大提公升了我們sql的查詢效能。
mysql慢查詢日誌對於跟蹤有問題的查詢非常有用,可以分析出**實現中耗費資源的sql語句,對我們程式的優化有很高的參考。本篇主要將慢查詢日誌的開啟,日誌分析,這也是優化sql程式的一般步驟中至關重要的一步。
MySQL慢查詢日誌相關筆記
mysql優化sql,針對慢sql語句的查詢及相關配置。相關命令 顯示慢查詢sql語句數量 show global status like slow queries 檢視是否開啟慢查詢日誌,並顯示日誌存放位置 show variables like slow query log sql執行時間超過m...
mysql慢查詢日誌相關操作
查詢是否開啟mysql慢查詢日誌 檢視是否記錄無索引的sql 將沒有索引的sql記錄到日誌表 set global log queries not using indexes on 查詢多長時間的sql會記錄日誌 我這裡是10秒 查詢慢查詢日誌儲存位置 設定日誌儲存路徑 set global slo...
mysql中查詢日誌與慢查詢日誌
一 查詢日誌 查詢日誌記錄mysql中所有的query,通過 general log file name 來開啟該功能。該功能記錄了所有的query 含select 會影響效能。預設的查詢日誌檔名為 hostname.log。預設情況下是不開啟 查詢日誌的。檢視是否啟用查詢日誌及 儲存檔案及路徑 二...