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 的使用者的權限執行,應謹慎使用。