MySQL Shell 8.4  /  ...  /  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 的使用者權限執行,因此使用時應格外小心。