慢查詢日誌

慢查詢日誌包含查詢的日誌事件,最多需要 1 秒才能完成。例如,最多 10 秒鐘即可完成。要檢視當前設定的時間閾值,請發出以下命令:

SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
|         10.000000 |
+-------------------+

它可以在 my.cnfmy.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