Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
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中,消费者的设置形成了从高层次到低层次的层级结构。以下原则适用:

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

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

  • 如果一个消费者未被检查,或者被检查但被禁用,那么依赖于它的其他消费者也不会被检查。

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

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

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

  • global_instrumentation是最高级别的消费者。如果global_instrumentation设置为NO,它会禁用全局仪表板。所有其他设置都低于这一层次,不会被检查;它们的值不重要。不会维护任何全局或每个线程的信息,也不会在当前事件或事件历史表中收集任何单独事件。如果global_instrumentation设置为YES,性能模式会维护全局状态的信息,并且还会检查线程_仪表板消费者。

  • thread_instrumentation只有在global_instrumentation设置为YES时才会被检查。否则,如果thread_instrumentation设置为NO,它会禁用线程特定的仪表板,并忽略所有低级别的设置。不维护任何线程信息,也不会在当前事件或事件历史表中收集任何单独事件。如果thread_instrumentation设置为YES,性能模式会维护线程特定的信息,并且还会检查events_xxx_current消费者。

这些消费者需要global_instrumentationthread_instrumentation都设置为YES,否则它们不会被检查。如果被检查,它们将按照以下方式操作:

  • 事件等待当前表,如果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表中收集等待事件的过程。

这些消费者需要全局性能监控线程性能监控都设置为YES,否则它们不会被检查。如果被检查,它们的行为如下:

  • 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表中收集阶段事件的过程。

这些消费者需要全局性能监控线程性能监控都设置为YES,否则它们不会被检查。如果被检查,它们的行为如下:

  • events_statements_cpu如果NO,则禁用对events_statements_cpu表中CPU_时间的测量。如果YES,并且性能监控被启用并计时,则对events_statements_cpu表中CPU_时间的测量将被执行。

  • 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 is not checked if events_statements_current is NO. Otherwise, an events_statements_history_long value of NO or YES disables or enables collection of statement events in the events_statements_history_long table.

这些消费者需要同时有global_instrumentationthread_instrumentation设置为YES,否则它们不会被检查。如果被检查,它们将按照以下方式工作:

  • events_transactions_current如果是NO,则禁用在events_transactions_current表中的单个事务事件收集。如果是YES,它启用了事务事件的收集,并且性能_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_instrumentation设置为YES,否则它不会被检查。没有依赖于语句事件消费者的依赖,因此您可以根据摘要获得统计信息,而无需在events_statements_current中收集详细的语句事件,这对于开销来说是有益的。相反,您可以在events_statements_current中获取详细语句,而无需摘要(DIGESTDIGEST_TEXT列在这种情况下为NULL)。

有关语句摘要的更多信息,请参阅第29.10节,“性能_schema 语句摘要和抽样”