在 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 值设置为 YES 或 NO。
对 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_instrumentation为NO,它将禁用全局仪器化。所有其他设置都处于较低级别,并且不会被检查;它们被设置为多少并不重要。不会维护任何全局或每个线程的信息,并且不会在当前事件或事件历史记录表中收集任何单个事件。如果global_instrumentation为YES,Performance Schema 会维护全局状态的信息,并检查thread_instrumentation消费者。thread_instrumentation仅在global_instrumentation为YES时才会被检查。否则,如果thread_instrumentation为NO,它将禁用特定于线程的仪器化,所有更低级别的设置都将被忽略。不会维护每个线程的信息,并且不会在当前事件或事件历史记录表中收集任何单个事件。如果thread_instrumentation为YES,Performance Schema 会维护特定于线程的信息,并检查events_消费者。xxx_current
这些消费者需要 global_instrumentation 和 thread_instrumentation 都为 YES,否则它们不会被检查。如果被检查,它们的行为如下
events_waits_current,如果为NO,将禁用在events_waits_current表中收集单个等待事件。如果为YES,它将启用等待事件收集,Performance Schema 会检查events_waits_history和events_waits_history_long消费者。events_waits_history不会被检查,如果event_waits_current是NO。 否则,events_waits_history值为NO或YES将分别禁用或启用在events_waits_history表中收集等待事件。events_waits_history_long不会被检查,如果event_waits_current是NO。 否则,events_waits_history_long值为NO或YES将分别禁用或启用在events_waits_history_long表中收集等待事件。
这些消费者需要 global_instrumentation 和 thread_instrumentation 都为 YES,否则它们不会被检查。如果被检查,它们的行为如下
events_stages_current,如果为NO,则禁用在events_stages_current表中收集单个阶段事件。 如果为YES,则启用阶段事件收集,并且 Performance Schema 检查events_stages_history和events_stages_history_long消费者。events_stages_history不会被检查,如果event_stages_current是NO。 否则,events_stages_history值为NO或YES将分别禁用或启用在events_stages_history表中收集阶段事件。events_stages_history_long不会被检查,如果event_stages_current是NO。 否则,events_stages_history_long值为NO或YES将分别禁用或启用在events_stages_history_long表中收集阶段事件。
这些消费者需要 global_instrumentation 和 thread_instrumentation 都为 YES,否则它们不会被检查。如果被检查,它们的行为如下
events_statements_cpu,如果为NO,则禁用CPU_TIME的测量。 如果为YES,并且仪器已启用并计时,则测量CPU_TIME。events_statements_current,如果为NO,则禁用在events_statements_current表中收集单个语句事件。 如果为YES,则启用语句事件收集,并且 Performance Schema 检查events_statements_history和events_statements_history_long消费者。events_statements_history不会被检查,如果events_statements_current是NO。 否则,events_statements_history值为NO或YES将分别禁用或启用在events_statements_history表中收集语句事件。events_statements_history_long不会被检查,如果events_statements_current是NO。 否则,events_statements_history_long值为NO或YES将分别禁用或启用在events_statements_history_long表中收集语句事件。
这些消费者需要 global_instrumentation 和 thread_instrumentation 都为 YES,否则它们不会被检查。如果被检查,它们的行为如下
events_transactions_current,如果为NO,则禁用在events_transactions_current表中收集单个事务事件。 如果为YES,则启用事务事件收集,并且 Performance Schema 检查events_transactions_history和events_transactions_history_long消费者。events_transactions_history不会被检查,如果events_transactions_current是NO。 否则,events_transactions_history值为NO或YES将分别禁用或启用在events_transactions_history表中收集事务事件。events_transactions_history_long不会被检查,如果events_transactions_current是NO。 否则,events_transactions_history_long值为NO或YES将分别禁用或启用在events_transactions_history_long表中收集事务事件。
statements_digest 消费者要求 global_instrumentation 为 YES,否则不会被检查。 它不依赖于语句事件消费者,因此您可以获得每个摘要的统计信息,而无需在 events_statements_current 中收集统计信息,这在开销方面有利。 相反,您可以在 events_statements_current 中获取详细的语句,而无需摘要(在这种情况下,DIGEST 和 DIGEST_TEXT 列为 NULL)。
有关语句摘要的更多信息,请参见 第 29.10 节“Performance Schema 语句摘要和采样”。