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 的值表示),且工具化執行緒物件的最大允許數量不超過背景執行緒的數量,則表格為空。
效能架構支援對狀態變數表格執行 TRUNCATE TABLE
,如下所示:
global_status
:重設執行緒、帳戶、主機和使用者狀態。重設全域狀態變數,但伺服器永遠不會重設的變數除外。session_status
:不支援。status_by_thread
:將所有執行緒的狀態匯總到全域狀態和帳戶狀態,然後重設執行緒狀態。如果未收集帳戶統計資料,則將工作階段狀態新增至主機和使用者狀態(如果收集了主機和使用者狀態)。如果將
performance_schema_accounts_size
、performance_schema_hosts_size
和performance_schema_users_size
系統變數分別設為 0,則不會收集帳戶、主機和使用者統計資料。
FLUSH STATUS
將所有活動工作階段的工作階段狀態新增至全域狀態變數,重設所有活動工作階段的狀態,並重設從已中斷連線工作階段匯總的帳戶、主機和使用者狀態值。