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 節,「效能架構語句摘要和取樣」。