文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  依消費者進行預先篩選

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 節,「效能綱要陳述式摘要和取樣」