文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.4.6 依執行緒預先篩選

threads 表格包含每個伺服器執行緒的資料列。每個資料列都包含關於執行緒的資訊,並指示是否為其啟用監控。若要讓 Performance Schema 監控執行緒,必須符合以下條件

  • setup_consumers 表格中的 thread_instrumentation 消費者必須為 YES

  • threads.INSTRUMENTED 資料行必須為 YES

  • 僅針對在 setup_instruments 表格中啟用的儀器產生的執行緒事件進行監控。

threads 表格也會指示每個伺服器執行緒是否要執行歷史事件記錄。這包含等待、階段、陳述式和交易事件,並會影響記錄到這些表格

events_waits_history
events_waits_history_long
events_stages_history
events_stages_history_long
events_statements_history
events_statements_history_long
events_transactions_history
events_transactions_history_long

若要進行歷史事件記錄,必須符合以下條件

  • setup_consumers 表格中適當的歷史相關消費者必須啟用。例如,在 events_waits_historyevents_waits_history_long 表格中記錄等待事件,需要對應的 events_waits_historyevents_waits_history_long 消費者為 YES

  • threads.HISTORY 資料行必須為 YES

  • 僅針對在 setup_instruments 表格中啟用的儀器產生的執行緒事件進行記錄。

對於前台執行緒(來自客戶端連線),threads 資料表中列的 INSTRUMENTEDHISTORY 欄位的初始值,取決於與執行緒相關聯的使用者帳戶是否與 setup_actors 資料表中的任何列匹配。這些值來自匹配的 setup_actors 資料表列的 ENABLEDHISTORY 欄位。

對於背景執行緒,沒有相關聯的使用者。INSTRUMENTEDHISTORY 預設為 YES,並且不會參考 setup_actors

初始的 setup_actors 內容如下所示

mysql> SELECT * FROM performance_schema.setup_actors;
+------+------+------+---------+---------+
| HOST | USER | ROLE | ENABLED | HISTORY |
+------+------+------+---------+---------+
| %    | %    | %    | YES     | YES     |
+------+------+------+---------+---------+

HOSTUSER 欄位應包含文字主機名稱或使用者名稱,或 '%' 以匹配任何名稱。

ENABLEDHISTORY 欄位表示是否啟用匹配執行緒的檢測和歷史事件日誌記錄,受先前描述的其他條件約束。

當 Performance Schema 檢查 setup_actors 中每個新前台執行緒的匹配項時,它會先嘗試使用 USERHOST 欄位尋找更精確的匹配項(ROLE 未使用)。

  • 具有 USER='literal'HOST='literal' 的列。

  • 具有 USER='literal'HOST='%' 的列。

  • 具有 USER='%'HOST='literal' 的列。

  • 具有 USER='%'HOST='%' 的列。

匹配發生的順序很重要,因為不同的匹配 setup_actors 列可以具有不同的 USERHOST 值。這使得能夠根據 ENABLEDHISTORY 欄位值,按主機、使用者或帳戶(使用者和主機組合)選擇性地應用檢測和歷史事件日誌記錄。

  • 當最佳匹配的列的 ENABLED=YES 時,執行緒的 INSTRUMENTED 值變為 YES。當最佳匹配的列的 HISTORY=YES 時,執行緒的 HISTORY 值變為 YES

  • 當最佳匹配的列的 ENABLED=NO 時,執行緒的 INSTRUMENTED 值變為 NO。當最佳匹配的列的 HISTORY=NO 時,執行緒的 HISTORY 值變為 NO

  • 當未找到匹配項時,執行緒的 INSTRUMENTEDHISTORY 值變為 NO

setup_actors 資料表列中的 ENABLEDHISTORY 欄位可以彼此獨立地設定為 YESNO。這表示您可以獨立於是否收集歷史事件來啟用檢測。

預設情況下,監控和歷史事件收集會為所有新的前台執行緒啟用,因為 setup_actors 資料表最初包含一個 HOSTUSER 皆為 '%' 的列。若要執行更有限的匹配,例如僅針對某些前台執行緒啟用監控,您必須變更此列(因為它會匹配任何連線),並為更特定的 HOST/USER 組合新增列。

假設您修改 setup_actors 如下

UPDATE performance_schema.setup_actors
SET ENABLED = 'NO', HISTORY = 'NO'
WHERE HOST = '%' AND USER = '%';
INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE,ENABLED,HISTORY)
VALUES('localhost','joe','%','YES','YES');
INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE,ENABLED,HISTORY)
VALUES('hosta.example.com','joe','%','YES','NO');
INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE,ENABLED,HISTORY)
VALUES('%','sam','%','NO','YES');

UPDATE 語句變更預設匹配,以停用檢測和歷史事件收集。INSERT 語句會為更特定的匹配新增列。

現在,Performance Schema 決定如何為新的連線執行緒設定 INSTRUMENTEDHISTORY 值,如下所示

  • 如果 joe 從本機主機連線,則連線會與第一個插入的列匹配。執行緒的 INSTRUMENTEDHISTORY 值變為 YES

  • 如果 joehosta.example.com 連線,則連線會與第二個插入的列匹配。執行緒的 INSTRUMENTED 值變為 YES,而 HISTORY 值變為 NO

  • 如果 joe 從任何其他主機連線,則沒有匹配項。執行緒的 INSTRUMENTEDHISTORY 值變為 NO

  • 如果 sam 從任何主機連線,則連線會與第三個插入的列匹配。執行緒的 INSTRUMENTED 值變為 NO,而 HISTORY 值變為 YES

  • 對於任何其他連線,HOSTUSER 設定為 '%' 的列會匹配。此列現在的 ENABLEDHISTORY 設定為 NO,因此執行緒的 INSTRUMENTEDHISTORY 值變為 NO

setup_actors 資料表的修改只會影響修改後建立的前台執行緒,而不會影響現有的執行緒。若要影響現有的執行緒,請修改 threads 資料表列的 INSTRUMENTEDHISTORY 欄位。