文件首頁
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


MySQL 9.0 參考手冊  /  ...  /  依消費者預先篩選

29.4.7 依消費者預先篩選

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 值設定為 YESNO

setup_consumers 資料表的修改會立即影響監控。

如果您停用消費者,伺服器不會花時間維護該消費者的目的地。例如,如果您不關心歷史事件資訊,請停用歷史消費者

UPDATE performance_schema.setup_consumers
SET ENABLED = 'NO'
WHERE NAME LIKE '%history%';

setup_consumers 資料表中的消費者設定會形成從較高層級到較低層級的階層。下列原則適用

  • 除非效能架構檢查消費者且已啟用消費者,否則與消費者相關聯的目的地不會收到任何事件。

  • 只有在消費者依賴的所有消費者 (如果有的話) 都已啟用的情況下,才會檢查消費者。

  • 如果未檢查消費者,或已檢查但已停用,則不會檢查依賴它的其他消費者。

  • 相依的消費者可能會有自己的相依消費者。

  • 如果事件不會傳送至任何目的地,則效能架構不會產生該事件。

以下清單說明可用的消費者值。如需討論數個具代表性的消費者組態及其對檢測的影響,請參閱第 29.4.8 節「消費者組態範例」

全域和執行緒消費者

  • global_instrumentation 是最高層級的消費者。如果 global_instrumentationNO,則會停用全域檢測。所有其他設定都是較低層級的,不會進行檢查;它們設定為何都無關緊要。不會維護全域或每個執行緒的資訊,也不會在 current-events 或 event-history 資料表中收集個別事件。如果 global_instrumentationYES,效能架構會維護全域狀態的資訊,並且也會檢查 thread_instrumentation 消費者。

  • 只有在 global_instrumentationYES 時,才會檢查 thread_instrumentation。否則,如果 thread_instrumentationNO,則會停用執行緒特定的檢測,並且會忽略所有較低層級的設定。不會維護每個執行緒的資訊,也不會在 current-events 或 event-history 資料表中收集個別事件。如果 thread_instrumentationYES,效能架構會維護執行緒特定的資訊,並且也會檢查 events_xxx_current 消費者。

等待事件消費者

這些消費者需要 global_instrumentationthread_instrumentation 都為 YES,否則不會檢查它們。如果檢查,它們的行為如下

  • 如果 events_waits_currentNO,則會停用在 events_waits_current 資料表中收集個別的等待事件。如果為 YES,則會啟用等待事件收集,並且效能架構會檢查 events_waits_historyevents_waits_history_long 消費者。

  • 如果 event_waits_currentNO,則不會檢查 events_waits_history。否則,events_waits_history 的值為 NOYES 會停用或啟用在 events_waits_history 資料表中收集等待事件。

  • 如果 event_waits_currentNO,則不會檢查 events_waits_history_long。否則,events_waits_history_long 的值為 NOYES 會停用或啟用在 events_waits_history_long 資料表中收集等待事件。

階段事件消費者

這些消費者需要 global_instrumentationthread_instrumentation 都為 YES,否則不會檢查它們。如果檢查,它們的行為如下

  • 如果 events_stages_currentNO,則會停用在 events_stages_current 資料表中收集個別的階段事件。如果為 YES,則會啟用階段事件收集,並且效能架構會檢查 events_stages_historyevents_stages_history_long 消費者。

  • 如果 event_stages_currentNO,則不會檢查 events_stages_history。否則,events_stages_history 的值為 NOYES 會停用或啟用在 events_stages_history 資料表中收集階段事件。

  • 如果 event_stages_currentNO,則不會檢查 events_stages_history_long。否則,events_stages_history_long 的值為 NOYES 會停用或啟用在 events_stages_history_long 資料表中收集階段事件。

語句事件消費者

這些消費者需要 global_instrumentationthread_instrumentation 都為 YES,否則不會檢查它們。如果檢查,它們的行為如下

  • 如果 events_statements_cpuNO,則會停用 CPU_TIME 的測量。如果為 YES,且檢測已啟用並計時,則會測量 CPU_TIME

  • 如果 events_statements_currentNO,則會停用在 events_statements_current 資料表中收集個別的語句事件。如果為 YES,則會啟用語句事件收集,並且效能架構會檢查 events_statements_historyevents_statements_history_long 消費者。

  • 如果 events_statements_currentNO,則不會檢查 events_statements_history。否則,events_statements_history 的值為 NOYES 會停用或啟用在 events_statements_history 資料表中收集語句事件。

  • 如果 events_statements_currentNO,則不會檢查 events_statements_history_long。否則,events_statements_history_long 的值為 NOYES 會停用或啟用在 events_statements_history_long 資料表中收集語句事件。

交易事件消費者

這些消費者需要 global_instrumentationthread_instrumentation 都為 YES,否則不會檢查它們。如果檢查,它們的行為如下

  • 如果 events_transactions_currentNO,則會停用在 events_transactions_current 資料表中收集個別的交易事件。如果為 YES,則會啟用交易事件收集,並且效能架構會檢查 events_transactions_historyevents_transactions_history_long 消費者。

  • 如果 events_transactions_currentNO,則不會檢查 events_transactions_history。否則,events_transactions_history 的值為 NOYES 會停用或啟用在 events_transactions_history 資料表中收集交易事件。

  • 如果 events_transactions_currentNO,則不會檢查 events_transactions_history_long。否則,events_transactions_history_long 的值為 NOYES 會停用或啟用在 events_transactions_history_long 資料表中收集交易事件。

語句摘要消費者

statements_digest 消費者需要 global_instrumentationYES,否則不會進行檢查。它不依賴於語句事件消費者,因此您可以取得每個摘要的統計資料,而不必在 events_statements_current 中收集統計資料,這在額外負荷方面是有利的。相反地,您可以在 events_statements_current 中取得詳細的語句,而無需摘要(在這種情況下,DIGESTDIGEST_TEXT 欄位為 NULL)。

如需關於語句摘要的詳細資訊,請參閱第 29.10 節,「效能架構語句摘要和取樣」