文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (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,则会禁用全局检测。所有其他设置都处于较低层级,不会被检查;它们的设置无关紧要。不会维护全局或每个线程信息,并且不会在当前事件或事件历史表中收集任何单个事件。如果 global_instrumentationYES,则性能模式会维护全局状态信息,还会检查 thread_instrumentation 消费者。

  • thread_instrumentation 仅在 global_instrumentationYES 时才会被检查。否则,如果 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_currentNO 时不会被检查。否则,events_waits_history 值为 NOYES 会分别禁用或启用在 events_waits_history 表中收集等待事件。

  • events_waits_history_longevent_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_historyevent_stages_currentNO 时不会被检查。否则,events_stages_history 值为 NOYES 会分别禁用或启用在 events_stages_history 表中收集阶段事件。

  • events_stages_history_longevent_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_historyevents_statements_currentNO 时不会被检查。否则,events_statements_history 值为 NOYES 会分别禁用或启用在 events_statements_history 表中收集语句事件。

  • events_statements_history_longevents_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_historyevents_transactions_currentNO 时不会被检查。否则,events_transactions_history 值为 NOYES 会分别禁用或启用在 events_transactions_history 表中收集事务事件。

  • events_transactions_history_longevents_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 语句摘要和采样”