文档首页
MySQL 8.4 参考手册
相关文档 下载此手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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 表中的消费者设置从高层级到低层级形成层次结构。以下原则适用

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

  • 仅当它所依赖的消费者(如果有)全部启用时,才会检查消费者。

  • 如果未检查消费者,或者已检查但被禁用,则依赖于它的其他消费者不会被检查。

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

  • 如果事件不会发送到任何目的地,Performance Schema 不会生成它。

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

全局和线程消费者

  • global_instrumentation 是最高级别的消费者。如果 global_instrumentationNO,它将禁用全局仪器化。所有其他设置都处于较低级别,并且不会被检查;它们被设置为多少并不重要。不会维护任何全局或每个线程的信息,并且不会在当前事件或事件历史记录表中收集任何单个事件。如果 global_instrumentationYES,Performance Schema 会维护全局状态的信息,并检查 thread_instrumentation 消费者。

  • thread_instrumentation 仅在 global_instrumentationYES 时才会被检查。否则,如果 thread_instrumentationNO,它将禁用特定于线程的仪器化,所有更低级别的设置都将被忽略。不会维护每个线程的信息,并且不会在当前事件或事件历史记录表中收集任何单个事件。如果 thread_instrumentationYES,Performance Schema 会维护特定于线程的信息,并检查 events_xxx_current 消费者。

等待事件消费者

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

  • events_waits_current,如果为 NO,将禁用在 events_waits_current 表中收集单个等待事件。如果为 YES,它将启用等待事件收集,Performance Schema 会检查 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_instrumentation 都为 YES,否则它们不会被检查。如果被检查,它们的行为如下

  • events_stages_current,如果为 NO,则禁用在 events_stages_current 表中收集单个阶段事件。 如果为 YES,则启用阶段事件收集,并且 Performance Schema 检查 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_instrumentation 都为 YES,否则它们不会被检查。如果被检查,它们的行为如下

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

  • events_statements_current,如果为 NO,则禁用在 events_statements_current 表中收集单个语句事件。 如果为 YES,则启用语句事件收集,并且 Performance Schema 检查 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,则启用事务事件收集,并且 Performance Schema 检查 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 表中收集事务事件。

语句摘要消费者

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

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