Documentation Home

27.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形成了从高到低的层次结构。以下原则适用:

  • 与消费者关联的目的地不会收到任何事件,除非性能模式检查消费者并且消费者已启用。

  • 一个消费者只有在它依赖的所有消费者(如果有的话)都被启用时才会被检查。

  • 如果一个消费者没有被选中,或者被选中但被禁用,那么依赖它的其他消费者也不会被选中。

  • 依赖消费者可能有自己的依赖消费者。

  • 如果事件不会发送到任何目的地,则性能模式不会产生它。

以下列表描述了可用的消费者值。有关几种代表性消费者配置及其对仪器的影响的讨论,请参阅 第 27.4.8 节,“示例消费者配置”

全局和线程消费者

  • global_instrumentation是最高级别的消费者。如果 global_instrumentationNO,它会禁用全局检测。所有其他设置都是较低级别的,未检查;它们的设置无关紧要。当前事件或事件历史表中没有维护全局或每个线程信息,也没有收集单个事件。如果global_instrumentationYES,则性能模式维护全局状态的信息并检查 thread_instrumentation消费者。

  • thread_instrumentation仅当global_instrumentation是 时才检查YES。否则,如果 thread_instrumentationNO,它会禁用特定于线程的检测并忽略所有较低级别的设置。每个线程都不会维护任何信息,并且不会在当前事件或事件历史表中收集任何单独的事件。如果 thread_instrumentationYES,则性能模式维护特定于线程的信息并检查 消费者。 events_xxx_current

等待事件消费者

这些消费者需要同时进行 global_instrumentationthread_instrumentation进行 检查,YES或者不进行检查。如果选中,它们的行为如下:

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

  • events_waits_historyevent_waits_current如果是 则不检查 NO。否则, or 的 值events_waits_history将 禁用或启用表中等待事件的收集 。 NOYESevents_waits_history

  • events_waits_history_longevent_waits_current如果是 则不检查NO。否则, or 的 值events_waits_history_long将 禁用或启用表中等待事件的收集 。 NOYESevents_waits_history_long

舞台活动消费者

这些消费者需要同时进行 global_instrumentationthread_instrumentation进行 检查,YES或者不进行检查。如果选中,它们的行为如下:

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

  • events_stages_historyevent_stages_current如果是 则不检查 NO。否则, or 的 值events_stages_history将 禁用或启用表中阶段事件的收集 。 NOYESevents_stages_history

  • events_stages_history_longevent_stages_current如果是 则不检查NO。否则, or 的 值events_stages_history_long将 禁用或启用表中阶段事件的收集 。 NOYESevents_stages_history_long

声明事件消费者

这些消费者需要同时进行 global_instrumentationthread_instrumentation进行 检查,YES或者不进行检查。如果选中,它们的行为如下:

  • 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_historyevents_statements_current如果是 则不检查NO。否则, or 的 值events_statements_history将 禁用或启用表中语句事件的集合 。 NOYESevents_statements_history

  • events_statements_history_longevents_statements_current如果是 则不检查NO。否则, or 的 值events_statements_history_long将 禁用或启用表中语句事件的集合 。 NOYESevents_statements_history_long

事务事件消费者

这些消费者需要同时进行 global_instrumentationthread_instrumentation进行 检查,YES或者不进行检查。如果选中,它们的行为如下:

  • events_transactions_current,如果 NO,禁用表中单个事务事件的收集 events_transactions_current 。如果YES,它启用事务事件收集并且性能模式检查 events_transactions_historyevents_transactions_history_long 消费者。

  • events_transactions_historyevents_transactions_current 如果是则不检查NO。否则, or 的 值events_transactions_history将 禁用或启用表中事务事件的收集 。 NOYESevents_transactions_history

  • events_transactions_history_longevents_transactions_current 如果是则不检查NO。否则, or 的 值events_transactions_history_long将 禁用或启用表中事务事件的收集 。 NOYESevents_transactions_history_long

语句摘要消费者

statements_digest消费者要求 global_instrumentation或 不YES检查。不依赖于语句事件消费者,因此您可以获取每个摘要的统计信息,而无需在 中收集统计信息 events_statements_current,这在开销方面是有利的。相反,您可以在 events_statements_current没有摘要的情况下获得详细的陈述(在这种情况下是DIGESTDIGEST_TEXTNULL)。

有关语句摘要的更多信息,请参阅 第 27.10 节,“性能模式语句摘要和采样”