MySQL Shell 9.0  /  ...  /  collectSlowQueryDiagnostics 公用程式

11.8.3 collectSlowQueryDiagnostics 公用程式

關於公用程式

util.debug.collectSlowQueryDiagnostics() 在您的 MySQL 伺服器上執行多次診斷報告反覆運算,讓您在處理指定的查詢時分析伺服器的多個層面。

診斷報告會產生為 zip 檔案,儲存至本機目錄或指定的路徑。

此公用程式會以 TSV 和 YAML 格式產生檔案。

需求和限制

下列需求適用於使用診斷收集公用程式的匯出

  • 需要 MySQL 5.7 或更新版本。

  • 此公用程式必須以 root 身分執行。

執行公用程式

診斷公用程式具有下列簽章

      util.debug.collectSlowQueryDiagnostics("path", "query", {options})
注意

此公用程式傳回的資料也包括 util.debug.collectDiagnostics()util.debug.collectHighLoadDiagnostics() 所收集的預設資料。

  • "path":診斷封存寫入的位置。如果為空,則會寫入至目前的目錄。

    "query":要分析的 SQL 查詢。

    "options":選擇性引數的字典。請參閱收集診斷的選項

除了 util.debug.collectHighLoadDiagnostics() 診斷的內容之外,util.debug.collectSlowQueryDiagnostics 還會收集下列資訊

  • 查詢的 EXPLAIN 輸出。

  • 查詢的最佳化工具追蹤。

  • 查詢中使用的表格 DDL。

  • 查詢產生的警告。

收集診斷的選項

delay: number

資料收集反覆運算之間等待的秒數。預設值為 30。只有在定義的查詢執行時才會收集資料。查詢完成時,資料收集會停止。

innodbMutex:true | false

如果為 true,也會收集 SHOW ENGINE INNODB MUTEX 的輸出。此命令預設為停用,因為它可能會影響生產效能。

pfsInstrumentation:[current | medium | full]

定義使用哪些 Performance Schema 工具和取用者。可能的值如下

  • current:預設值。目前已啟用的 Performance Schema 工具和取用者。不會對伺服器的組態進行變更。

  • medium:啟用除了 %history%history_long 之外的所有取用者,以及除了 wait/synch/% 之外的所有工具。

  • full:啟用所有取用者和所有工具。

customSql: array

要執行的一或多個 SQL 陳述式。您可以使用下列字首來控制陳述式的執行時間

  • BEFORE 或無:預設值。自訂 SQL 會在指標收集反覆運算開始之前執行一次。

  • AFTER:自訂 SQL 會在指標收集反覆運算完成之後執行一次。

  • DURING:自訂 SQL 會針對指標收集的每個反覆運算執行一次。

例如

            {"customSql": ["statement1", "statement2", "statement3"]}
customShell: array

要執行的一或多個 Shell (DOS、BOURNE 等) 命令。您可以使用下列字首來控制命令的執行時間

  • BEFORE:預設值。命令會在指標收集反覆運算開始之前執行一次。

  • DURING:命令會針對指標收集的每個反覆運算執行一次。

  • AFTER:命令會在指標收集反覆運算完成之後執行一次。

例如

            {"customShell": ["command1", "command2", "command3"]}
重要

這些命令會使用執行 MySQL Shell 的使用者的權限執行,應謹慎使用。