Navicat 部落格

使用 MySQL 慢速査詢記錄 2021 年 8 月 27 日,由 Robert Gravelle 撰寫

MySQL 提供了幾個不同的記錄檔,可以幫助你了解 MySQL 伺服器執行個體內部的情况。這些記錄檔包括:

  • 錯誤記錄
  • isam 記錄
  • 一般查詢記錄
  • 二進位記錄
  • 慢速記錄

其中,慢速査詢記錄對於尋找效率低下或耗時的査詢尤其有用,這些查詢可能會對資料庫和伺服器的整體效能產生不利影響。本篇文章將介紹如何讀取和解釋慢速査詢記錄輸出,以提高偵錯査詢效能。

啟用慢速査詢記錄

慢速査詢記錄由 SQL 陳述式組成,這些 SQL 陳述式的執行時間超過 long_query_time 秒,並且至少需要檢查 min_examined_row_limit 列。因此,出現在慢速査詢記錄中的査詢是那些需要花費大量時間執行的査詢,是需要最佳化的査詢。

慢速査詢記錄預設是停用的,以節省磁碟空間。你可以將 --slow_query_log 變數設定為 1(在 Navicat 中為 ON)來開啟它。同樣,不提供參數也會開啟慢速査詢記錄。同樣,參數 0(在 Navicat 中為 OFF)將停用記錄。

在 Navicat 中,可以使用伺服器監控工具存取系統變數。你可通在「工具」主選單命令存取伺服器監控。在伺服器監控中,按一下中間的變數索引標籤並向下捲動以查看清單中的 slow_query_logslow_query_log_file 伺服器變數:

slow_query_log_vars_in_navicat (50K)

讀取慢速査詢記錄

由於要篩選的內容太多,因此檢查長的慢速査詢記錄可能是一項耗時的任務。下面是慢速記錄檔中的典型項目:

# Time: 140905  6:33:11
# User@Host: dbuser[dbname] @ hostname [1.2.3.4]
# Query_time: 0.116250  Lock_time: 0.000035 Rows_sent: 0  Rows_examined: 20878
use dbname;
SET timestamp=1409898791;
...SLOW QUERY HERE...

為了更容易讀取記錄內容,可以使用 mysqldumpslow 命令列公用程式處理慢速査詢記錄檔並摘要其內容:

~ $ mysqldumpslow -a /var/lib/mysql/slowquery.log
 Reading mysql slow query log from /var/lib/mysql/slowquery.log
 Count: 2  Time=316.67s (633s)  Lock=0.00s (0s)  Rows_sent=0.5 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost
...SLOW QUERY HERE...

Navicat 查詢分析器

Navicat Monitor的查詢分析器工具為査詢記錄提供圖形表示,使解釋其內容變得更加容易。此外,查詢分析器工具使你能夠監控和將查詢效能最佳化,將查詢活動統計資料視覺化,分析 SQL 陳述式,以及快速識別和解決長時間執行的查詢。

除了慢速査詢記錄,查詢分析器透過以下方法收集有關查詢陳述式的資訊。

  1. 從伺服器擷取一般查詢記錄並分析資訊。
  2. 查詢 performance_schema 資料庫並分析特定的效能資訊。

你可以在「最新的死結查詢」和「程序清單」部分下面找到「查詢分析器」部分:

query_analyzer (134K)

總結

本文介紹了幾種讀取慢速査詢記錄輸出的方法,以更好地偵錯査詢的效能。

按一下此處了解有關 Navicat Monitor 所有功能的更多詳細資料,或下載為期 14 天的全功能免費試用版!

Navicat 文章
頻道記錄
分享
部落格封存檔