MySQL 伺服器維護許多狀態變數,提供其操作的相關資訊 (請參閱第 7.1.10 節,「伺服器狀態變數」)。狀態變數資訊可在這些 Performance Schema 表格中取得
global_status
:全域狀態變數。只想要全域值的應用程式應使用此表格。session_status
:目前工作階段的狀態變數。想要其自身工作階段的所有狀態變數值的應用程式應使用此表格。它包含其工作階段的工作階段變數,以及沒有工作階段對應項的全域變數的值。status_by_thread
:每個活動工作階段的工作階段狀態變數。想要知道特定工作階段的工作階段變數值的應用程式應使用此表格。它僅包含工作階段變數,並以執行緒 ID 識別。
還有一些摘要表格提供依帳戶、主機名稱和使用者名稱彙總的狀態變數資訊。請參閱第 29.12.20.12 節,「狀態變數摘要表格」。
工作階段變數表格 (session_status
、status_by_thread
) 僅包含活動工作階段的資訊,不包含已終止的工作階段。
Performance Schema 僅針對 threads
表格中 INSTRUMENTED
值為 YES
的執行緒收集全域狀態變數的統計資訊。無論 INSTRUMENTED
值為何,一律會收集工作階段狀態變數的統計資訊。
Performance Schema 不會在狀態變數表格中收集 Com_
狀態變數的統計資訊。若要取得全域和每個工作階段的陳述式執行計數,請分別使用 xxx
events_statements_summary_global_by_event_name
和 events_statements_summary_by_thread_by_event_name
表格。例如
SELECT EVENT_NAME, COUNT_STAR
FROM performance_schema.events_statements_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'statement/sql/%';
global_status
和 session_status
表格具有以下資料行
VARIABLE_NAME
狀態變數名稱。
VARIABLE_VALUE
狀態變數值。對於
global_status
,此資料行包含全域值。對於session_status
,此資料行包含目前工作階段的變數值。
global_status
和 session_status
表格具有以下索引
在 (
VARIABLE_NAME
) 上的主索引鍵
status_by_thread
表格包含每個活動執行緒的狀態。它具有以下資料行
THREAD_ID
定義狀態變數的工作階段的執行緒識別碼。
VARIABLE_NAME
狀態變數名稱。
VARIABLE_VALUE
由
THREAD_ID
資料行命名的工作階段的工作階段變數值。
status_by_thread
資料表具有以下索引:
主要索引鍵位於 (
THREAD_ID
,VARIABLE_NAME
)
status_by_thread
資料表僅包含前景執行緒的狀態變數資訊。如果 performance_schema_max_thread_instances
系統變數未自動調整大小(以值 −1 表示),且允許的最大檢測執行緒物件數量不大於背景執行緒數量,則此資料表為空。
Performance Schema 支援對狀態變數資料表使用 TRUNCATE TABLE
,如下所示:
global_status
:重設執行緒、帳戶、主機和使用者狀態。重設全域狀態變數,但伺服器永遠不會重設的變數除外。session_status
:不支援。status_by_thread
:將所有執行緒的狀態匯總到全域狀態和帳戶狀態,然後重設執行緒狀態。如果未收集帳戶統計資訊,則會將工作階段狀態新增到主機和使用者狀態(如果收集主機和使用者狀態)。如果分別將
performance_schema_accounts_size
、performance_schema_hosts_size
和performance_schema_users_size
系統變數設定為 0,則不會收集帳戶、主機和使用者統計資訊。
FLUSH STATUS
會將所有活動工作階段的工作階段狀態新增到全域狀態變數,重設所有活動工作階段的狀態,並重設從已中斷連線的工作階段匯總的帳戶、主機和使用者狀態值。