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_history
和events_waits_history_long
表格中記錄等待事件,需要對應的events_waits_history
和events_waits_history_long
消費者為YES
。threads.HISTORY
資料行必須為YES
。僅針對在
setup_instruments
表格中啟用的儀器產生的執行緒事件進行記錄。
對於前台執行緒(來自客戶端連線),threads
資料表中列的 INSTRUMENTED
和 HISTORY
欄位的初始值,取決於與執行緒相關聯的使用者帳戶是否與 setup_actors
資料表中的任何列匹配。這些值來自匹配的 setup_actors
資料表列的 ENABLED
和 HISTORY
欄位。
對於背景執行緒,沒有相關聯的使用者。INSTRUMENTED
和 HISTORY
預設為 YES
,並且不會參考 setup_actors
。
初始的 setup_actors
內容如下所示
mysql> SELECT * FROM performance_schema.setup_actors;
+------+------+------+---------+---------+
| HOST | USER | ROLE | ENABLED | HISTORY |
+------+------+------+---------+---------+
| % | % | % | YES | YES |
+------+------+------+---------+---------+
HOST
和 USER
欄位應包含文字主機名稱或使用者名稱,或 '%'
以匹配任何名稱。
ENABLED
和 HISTORY
欄位表示是否啟用匹配執行緒的檢測和歷史事件日誌記錄,受先前描述的其他條件約束。
當 Performance Schema 檢查 setup_actors
中每個新前台執行緒的匹配項時,它會先嘗試使用 USER
和 HOST
欄位尋找更精確的匹配項(ROLE
未使用)。
具有
USER='
和literal
'HOST='
的列。literal
'具有
USER='
和literal
'HOST='%'
的列。具有
USER='%'
和HOST='
的列。literal
'具有
USER='%'
和HOST='%'
的列。
匹配發生的順序很重要,因為不同的匹配 setup_actors
列可以具有不同的 USER
和 HOST
值。這使得能夠根據 ENABLED
和 HISTORY
欄位值,按主機、使用者或帳戶(使用者和主機組合)選擇性地應用檢測和歷史事件日誌記錄。
當最佳匹配的列的
ENABLED=YES
時,執行緒的INSTRUMENTED
值變為YES
。當最佳匹配的列的HISTORY=YES
時,執行緒的HISTORY
值變為YES
。當最佳匹配的列的
ENABLED=NO
時,執行緒的INSTRUMENTED
值變為NO
。當最佳匹配的列的HISTORY=NO
時,執行緒的HISTORY
值變為NO
。當未找到匹配項時,執行緒的
INSTRUMENTED
和HISTORY
值變為NO
。
setup_actors
資料表列中的 ENABLED
和 HISTORY
欄位可以彼此獨立地設定為 YES
或 NO
。這表示您可以獨立於是否收集歷史事件來啟用檢測。
預設情況下,監控和歷史事件收集會為所有新的前台執行緒啟用,因為 setup_actors
資料表最初包含一個 HOST
和 USER
皆為 '%'
的列。若要執行更有限的匹配,例如僅針對某些前台執行緒啟用監控,您必須變更此列(因為它會匹配任何連線),並為更特定的 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 決定如何為新的連線執行緒設定 INSTRUMENTED
和 HISTORY
值,如下所示
如果
joe
從本機主機連線,則連線會與第一個插入的列匹配。執行緒的INSTRUMENTED
和HISTORY
值變為YES
。如果
joe
從hosta.example.com
連線,則連線會與第二個插入的列匹配。執行緒的INSTRUMENTED
值變為YES
,而HISTORY
值變為NO
。如果
joe
從任何其他主機連線,則沒有匹配項。執行緒的INSTRUMENTED
和HISTORY
值變為NO
。如果
sam
從任何主機連線,則連線會與第三個插入的列匹配。執行緒的INSTRUMENTED
值變為NO
,而HISTORY
值變為YES
。對於任何其他連線,
HOST
和USER
設定為'%'
的列會匹配。此列現在的ENABLED
和HISTORY
設定為NO
,因此執行緒的INSTRUMENTED
和HISTORY
值變為NO
。
對 setup_actors
資料表的修改只會影響修改後建立的前台執行緒,而不會影響現有的執行緒。若要影響現有的執行緒,請修改 threads
資料表列的 INSTRUMENTED
和 HISTORY
欄位。