Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

29.4.7 按消费者预过滤

The 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,它禁用了全局仪器。如果 global_instrumentationYES,性能模式维护全局状态信息,并检查 thread_instrumentation 消费者。

  • thread_instrumentation 只有在 global_instrumentationYES 时才被检查。否则,如果 thread_instrumentationNO,它禁用了线程特定的仪器,并忽略了所有较低级别的设置。没有线程特定的信息被维护,并且没有个体事件被收集在当前事件或事件历史表中。如果 thread_instrumentationYES,性能模式维护线程特定的信息,并检查 events_xxx_current 消费者。

等待事件消费者

这些消费者需要同时 global_instrumentationthread_instrumentationYES,否则它们不会被检查。如果被检查,它们的行为如下:

  • events_waits_current,如果 NO,则禁用 events_waits_current 表中的单个等待事件收集。如果 YES,则启用等待事件收集,并且性能模式检查 events_waits_historyevents_waits_history_long 消费者。

  • events_waits_history 如果 event_waits_currentNO,则不检查。否则,events_waits_history 的值为 NOYES 禁用或启用 events_waits_history 表中的等待事件收集。

  • events_waits_history_long 如果 event_waits_currentNO,则不检查。否则,events_waits_history_long 的值为 NOYES 禁用或启用 events_waits_history_long 表中的等待事件收集。

阶段事件消费者

这些消费者需要同时 global_instrumentationthread_instrumentationYES,否则它们不会被检查。如果被检查,它们的行为如下:

  • events_stages_current,如果 NO,禁用 events_stages_current 表中的单个阶段事件收集。如果 YES,则启用阶段事件收集,并且性能模式检查 events_stages_historyevents_stages_history_long 消费者。

  • events_stages_history 如果 event_stages_currentNO,则不检查。否则,events_stages_history 的值为 NOYES 禁用或启用 events_stages_history 表中的阶段事件收集。

  • events_stages_history_long 如果 event_stages_currentNO,则不检查。否则,events_stages_history_long 的值为 NOYES 禁用或启用 events_stages_history_long 表中的阶段事件收集。

语句事件消费者

这些消费者需要同时 global_instrumentationthread_instrumentationYES,否则它们不会被检查。如果被检查,它们的行为如下:

  • events_statements_cpu,如果 NO,禁用 CPU_TIME 的测量。如果 YES,并且仪器启用且计时,CPU_TIME 将被测量。

  • events_statements_current,如果 NO,禁用 events_statements_current 表中的单个语句事件收集。如果 YES,则启用语句事件收集,并且性能模式检查 events_statements_historyevents_statements_history_long 消费者。

  • events_statements_history 如果 events_statements_currentNO,则不检查。否则,events_statements_history 的值为 NOYES 将禁用或启用在 events_statements_history 表中的语句事件收集。

  • events_statements_history_long 如果 events_statements_currentNO,则不检查。否则,events_statements_history_long 的值为 NOYES 将禁用或启用在 events_statements_history_long 表中的语句事件收集。

事务事件消费者

这些消费者需要 global_instrumentationthread_instrumentation 都是 YES,否则它们不被检查。如果被检查,它们的行为如下:

  • events_transactions_current,如果是 NO,则禁用在 events_transactions_current 表中的个体事务事件收集。如果是 YES,则启用事务事件收集,并检查 events_transactions_historyevents_transactions_history_long 消费者。

  • events_transactions_history 如果 events_transactions_currentNO,则不检查。否则,events_transactions_history 的值为 NOYES 将禁用或启用在 events_transactions_history 表中的事务事件收集。

  • events_transactions_history_long 如果 events_transactions_currentNO,则不检查。否则,events_transactions_history_long 的值为 NOYES 将禁用或启用在 events_transactions_history_long 表中的事务事件收集。

语句摘要消费者

语句摘要消费者需要 global_instrumentationYES,否则它不被检查。没有对语句事件消费者的依赖关系,因此您可以在不收集 events_statements_current 中的统计信息的情况下获取每个摘要的统计信息,这在开销方面是有利的。相反,您可以在 events_statements_current 中获取详细的语句,而不需要摘要(在这种情况下,DIGESTDIGEST_TEXT 列为 NULL)。

有关语句摘要的更多信息,请参阅 第 29.10 节,“Performance Schema 语句摘要和采样”