慢查詢日誌
慢查詢日誌包含查詢的日誌事件,最多需要 1 秒才能完成。例如,最多 10 秒鐘即可完成。要檢視當前設定的時間閾值,請發出以下命令:
SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10.000000 |
+-------------------+
它可以在 my.cnf
或 my.ini
檔案中設定為 GLOBAL 變數。或者它可以通過連線設定,儘管這很不尋常。該值可以設定在 0 到 10(秒)之間。有什麼價值?
- 10 太高,幾乎無用;
- 2 是妥協;
- 0.5 和其他分數是可能的;
- 0 抓住一切; 這可能會危險地快速填滿磁碟,但可能非常有用。
捕獲慢速查詢可以開啟或關閉。並且還指定了記錄到的檔案。以下內容捕獲了這些概念:
SELECT @@slow_query_log; -- Is capture currently active? (1=On, 0=Off)
SELECT @@slow_query_log_file; -- filename for capture. Resides in datadir
SELECT @@datadir; -- to see current value of the location for capture file
SET GLOBAL slow_query_log=0; -- Turn Off
-- make a backup of the Slow Query Log capture file. Then delete it.
SET GLOBAL slow_query_log=1; -- Turn it back On (new empty file is created)
有關更多資訊,請參閱 MySQL 手冊頁慢查詢日誌
注意:上面有關開啟/關閉 slowlog 的資訊在 5.6(?)中有所改變; 舊版本有另一種機制。
檢視什麼會降低系統速度的最佳方式:
long_query_time=...
turn on the slowlog
run for a few hours
turn off the slowlog (or raise the cutoff)
run pt-query-digest to find the 'worst' couple of queries. Or mysqldumpslow -s t