setup_consumers
資料表列出可用的消費者類型以及已啟用的消費者類型
mysql> SELECT * FROM performance_schema.setup_consumers;
+----------------------------------+---------+
| NAME | ENABLED |
+----------------------------------+---------+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
| events_statements_cpu | NO |
| events_statements_current | YES |
| events_statements_history | YES |
| events_statements_history_long | NO |
| events_transactions_current | YES |
| events_transactions_history | YES |
| events_transactions_history_long | NO |
| events_waits_current | NO |
| events_waits_history | NO |
| events_waits_history_long | NO |
| global_instrumentation | YES |
| thread_instrumentation | YES |
| statements_digest | YES |
+----------------------------------+---------+
修改 setup_consumers
資料表,以影響消費者階段的預先篩選,並決定將事件傳送至的目的地。若要啟用或停用消費者,請將其 ENABLED
值設定為 YES
或 NO
。
對 setup_consumers
資料表的修改會立即影響監控。
如果您停用消費者,伺服器不會花時間維護該消費者的目的地。例如,如果您不關心歷史事件資訊,請停用歷史消費者
UPDATE performance_schema.setup_consumers
SET ENABLED = 'NO'
WHERE NAME LIKE '%history%';
setup_consumers
資料表中的消費者設定會形成從較高層級到較低層級的階層。下列原則適用
除非效能架構檢查消費者且已啟用消費者,否則與消費者相關聯的目的地不會收到任何事件。
只有在消費者依賴的所有消費者 (如果有的話) 都已啟用的情況下,才會檢查消費者。
如果未檢查消費者,或已檢查但已停用,則不會檢查依賴它的其他消費者。
相依的消費者可能會有自己的相依消費者。
如果事件不會傳送至任何目的地,則效能架構不會產生該事件。
以下清單說明可用的消費者值。如需討論數個具代表性的消費者組態及其對檢測的影響,請參閱第 29.4.8 節「消費者組態範例」。
global_instrumentation
是最高層級的消費者。如果global_instrumentation
為NO
,則會停用全域檢測。所有其他設定都是較低層級的,不會進行檢查;它們設定為何都無關緊要。不會維護全域或每個執行緒的資訊,也不會在 current-events 或 event-history 資料表中收集個別事件。如果global_instrumentation
為YES
,效能架構會維護全域狀態的資訊,並且也會檢查thread_instrumentation
消費者。只有在
global_instrumentation
為YES
時,才會檢查thread_instrumentation
。否則,如果thread_instrumentation
為NO
,則會停用執行緒特定的檢測,並且會忽略所有較低層級的設定。不會維護每個執行緒的資訊,也不會在 current-events 或 event-history 資料表中收集個別事件。如果thread_instrumentation
為YES
,效能架構會維護執行緒特定的資訊,並且也會檢查events_
消費者。xxx
_current
這些消費者需要 global_instrumentation
和 thread_instrumentation
都為 YES
,否則不會檢查它們。如果檢查,它們的行為如下
如果
events_waits_current
為NO
,則會停用在events_waits_current
資料表中收集個別的等待事件。如果為YES
,則會啟用等待事件收集,並且效能架構會檢查events_waits_history
和events_waits_history_long
消費者。如果
event_waits_current
為NO
,則不會檢查events_waits_history
。否則,events_waits_history
的值為NO
或YES
會停用或啟用在events_waits_history
資料表中收集等待事件。如果
event_waits_current
為NO
,則不會檢查events_waits_history_long
。否則,events_waits_history_long
的值為NO
或YES
會停用或啟用在events_waits_history_long
資料表中收集等待事件。
這些消費者需要 global_instrumentation
和 thread_instrumentation
都為 YES
,否則不會檢查它們。如果檢查,它們的行為如下
如果
events_stages_current
為NO
,則會停用在events_stages_current
資料表中收集個別的階段事件。如果為YES
,則會啟用階段事件收集,並且效能架構會檢查events_stages_history
和events_stages_history_long
消費者。如果
event_stages_current
為NO
,則不會檢查events_stages_history
。否則,events_stages_history
的值為NO
或YES
會停用或啟用在events_stages_history
資料表中收集階段事件。如果
event_stages_current
為NO
,則不會檢查events_stages_history_long
。否則,events_stages_history_long
的值為NO
或YES
會停用或啟用在events_stages_history_long
資料表中收集階段事件。
這些消費者需要 global_instrumentation
和 thread_instrumentation
都為 YES
,否則不會檢查它們。如果檢查,它們的行為如下
如果
events_statements_cpu
為NO
,則會停用CPU_TIME
的測量。如果為YES
,且檢測已啟用並計時,則會測量CPU_TIME
。如果
events_statements_current
為NO
,則會停用在events_statements_current
資料表中收集個別的語句事件。如果為YES
,則會啟用語句事件收集,並且效能架構會檢查events_statements_history
和events_statements_history_long
消費者。如果
events_statements_current
為NO
,則不會檢查events_statements_history
。否則,events_statements_history
的值為NO
或YES
會停用或啟用在events_statements_history
資料表中收集語句事件。如果
events_statements_current
為NO
,則不會檢查events_statements_history_long
。否則,events_statements_history_long
的值為NO
或YES
會停用或啟用在events_statements_history_long
資料表中收集語句事件。
這些消費者需要 global_instrumentation
和 thread_instrumentation
都為 YES
,否則不會檢查它們。如果檢查,它們的行為如下
如果
events_transactions_current
為NO
,則會停用在events_transactions_current
資料表中收集個別的交易事件。如果為YES
,則會啟用交易事件收集,並且效能架構會檢查events_transactions_history
和events_transactions_history_long
消費者。如果
events_transactions_current
為NO
,則不會檢查events_transactions_history
。否則,events_transactions_history
的值為NO
或YES
會停用或啟用在events_transactions_history
資料表中收集交易事件。如果
events_transactions_current
為NO
,則不會檢查events_transactions_history_long
。否則,events_transactions_history_long
的值為NO
或YES
會停用或啟用在events_transactions_history_long
資料表中收集交易事件。
statements_digest
消費者需要 global_instrumentation
為 YES
,否則不會進行檢查。它不依賴於語句事件消費者,因此您可以取得每個摘要的統計資料,而不必在 events_statements_current
中收集統計資料,這在額外負荷方面是有利的。相反地,您可以在 events_statements_current
中取得詳細的語句,而無需摘要(在這種情況下,DIGEST
和 DIGEST_TEXT
欄位為 NULL
)。
如需關於語句摘要的詳細資訊,請參閱第 29.10 節,「效能架構語句摘要和取樣」。