建立目前伺服器狀態的報告,以用於診斷目的。
此程序會在執行期間透過操作系統變數 sql_log_bin
的工作階段值,停用二進位記錄。這是一項受限制的操作,因此程序需要足夠的權限才能設定受限制的工作階段變數。請參閱第 7.1.9.1 節,「系統變數權限」。
為 diagnostics()
收集的資料包括下列資訊
來自
metrics
檢視的資訊(請參閱第 30.4.3.21 節,「metrics 檢視」)來自其他相關
sys
schema 檢視的資訊,例如判斷 95 百分位數中查詢的檢視如果 MySQL 伺服器是 NDB Cluster 的一部分,則來自
ndbinfo
schema 的資訊複製狀態 (來源和複本)
一些 sys schema 檢視會計算為初始值(選用)、整體值和差異值
初始檢視是
diagnostics()
程序開始時檢視的內容。此輸出與差異檢視所用的起始值相同。如果diagnostics.include_raw
組態選項為ON
,則會包含初始檢視。整體檢視是
diagnostics()
程序結束時檢視的內容。此輸出與差異檢視所用的結束值相同。一律會包含整體檢視。差異檢視是從程序執行開始到結束的差異。最小值和最大值分別是來自結束檢視的最小值和最大值。它們不一定反映監控期間的最小值和最大值。除了
metrics
檢視外,差異僅在第一個和最後一個輸出之間計算。
in_max_runtime INT UNSIGNED
:資料收集的最長時間 (以秒為單位)。使用NULL
以收集預設 60 秒的資料。否則,請使用大於 0 的值。in_interval INT UNSIGNED
:資料收集之間的休眠時間 (以秒為單位)。使用NULL
以休眠預設的 30 秒。否則,請使用大於 0 的值。in_auto_config ENUM('current', 'medium', 'full')
:要使用的 Performance Schema 設定。允許的值為current
:使用目前的儀器和取用者設定。medium
:啟用一些儀器和取用者。full
:啟用所有儀器和取用者。
注意啟用的儀器和取用者越多,對 MySQL 伺服器效能的影響就越大。請小心使用
medium
設定,尤其是full
設定,這會對效能造成很大的影響。使用
medium
或full
設定需要SUPER
權限。如果選擇
current
以外的設定,目前的設定會在程序結束時還原。
可以使用下列組態選項或其對應的使用者定義變數來修改 diagnostics()
操作(請參閱第 30.4.2.1 節,「sys_config 表格」)
debug
,@sys.debug
若此選項為
ON
,則會產生除錯輸出。預設值為OFF
。diagnostics.allow_i_s_tables
,@sys.diagnostics.allow_i_s_tables
若此選項為
ON
,則允許diagnostics()
程序在 Information SchemaTABLES
表格上執行表格掃描。若表格數量眾多,這可能會非常耗費資源。預設值為OFF
。diagnostics.include_raw
,@sys.diagnostics.include_raw
若此選項為
ON
,則diagnostics()
程序輸出會包含查詢metrics
視圖的原始輸出。預設值為OFF
。statement_truncate_len
,@sys.statement_truncate_len
format_statement()
函式所傳回的語句最大長度。超過此長度的語句將會被截斷。預設值為 64。
建立一個診斷報告,該報告會每 30 秒開始一次迭代,並使用當前的 Performance Schema 設定執行最多 120 秒。
mysql> CALL sys.diagnostics(120, 30, 'current');
若要在執行時將 diagnostics()
程序的輸出捕獲到檔案中,請使用 mysql 客戶端 tee
和 filename
notee
命令(請參閱 第 6.5.1.2 節,「mysql 客戶端命令」)。
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;