util.debug.collectHighLoadDiagnostics()
會在您的 MySQL 伺服器上執行多次診斷報告迭代,讓您能夠在負載下分析伺服器的多個方面。
高負載診斷報告會產生為 zip 檔案,輸出至本機目錄或指定的路徑。
公用程式會產生 TSV 和 YAML 格式的檔案。
診斷公用程式具有下列簽章
util.debug.collectHighLoadDiagnostics(path, {options})
下列範例會將 zip 檔案寫入使用者的暫存目錄、執行 5 次收集迭代,並啟用所有效能綱要檢測和取用器
util.debug.collectHighLoadDiagnostics("/home/userName/temp/highLoad.zip", {iterations: 5, pfsInstrumentation: "full"})
此公用程式傳回的資料也包含由 util.debug.collectDiagnostics()
收集的資料。
- iterations: number
預設值為 2。高負載診斷資料收集的迭代次數。
- delay: number
預設值為 300 秒。高負載診斷資料收集的迭代之間的秒數。
- innodbMutex: [true | false]
-
預設值為 false。若設定為 true,則會收集
SHOW ENGINE INNODB MUTEX
的輸出。注意此參數可能會影響效能。
- pfsInstrumentation: [current | medium | full]
-
預設值為 current。定義要使用哪些效能綱要檢測和取用器。可能的值為
current
:目前已啟用的效能綱要檢測和取用器。不會對伺服器的組態進行任何變更。medium
:啟用除了%history
和%history_long
以外的所有取用器,以及除了wait/synch/%
以外的所有檢測。full
:啟用所有取用器和所有檢測。
- customSql:
array
-
要執行的一或多個 SQL 陳述式。您可以使用下列前置詞來控制執行陳述式的時間
PRE
:預設值。陳述式會執行一次,在度量收集迭代開始之前。POST
:陳述式會執行一次,在度量收集迭代完成之後。ITER
:陳述式會針對度量收集的每個迭代執行一次。
例如
{"customSql": ["statement1", "statement2", "statement3"]}
- customShell
array
-
要執行的一或多個 Shell 命令。您可以使用下列前置詞來控制執行命令的時間
BEFORE
:預設值。陳述式會執行一次,在度量收集迭代開始之前。DURING
:陳述式會針對度量收集的每個迭代執行一次。AFTER
:陳述式會執行一次,在度量收集迭代完成之後。
例如
{"customShell": ["command1", "command2", "command3"]}
重要這些命令會以執行 MySQL Shell 之使用者的權限執行,應謹慎使用。