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