util.debug.collectSlowQueryDiagnostics()
會在您的 MySQL 伺服器上執行多次診斷報告迭代,讓您在處理指定查詢時分析伺服器的多個方面。
診斷報告會以 zip 檔案的形式產生至本機目錄或指定的路徑。
此實用工具會以 TSV 和 YAML 格式產生檔案。
此診斷實用工具具有下列簽章
util.debug.collectSlowQueryDiagnostics("path", "query", {options})
此實用工具傳回的資料也包含 util.debug.collectDiagnostics()
和 util.debug.collectHighLoadDiagnostics()
收集的預設資料。
-
"
:診斷封存檔的寫入位置。如果為空,則會寫入至目前目錄。path
""
:要分析的 SQL 查詢。query
""
:選擇性引數的字典。請參閱收集診斷的選項。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 的使用者權限執行,因此使用時應格外小心。