在 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
表中的消费者设置形成从较高层级到较低层级的层次结构。以下原则适用
与消费者关联的目标除非性能模式检查该消费者并且该消费者已启用,否则不会接收任何事件。
仅当它依赖的所有消费者(如果有)都已启用时,才会检查消费者。
如果消费者未被检查或被检查但被禁用,则依赖它的其他消费者不会被检查。
依赖的消费者可能还有自己的依赖的消费者。
如果事件不会发送到任何目标,则性能模式不会生成它。
以下列表描述了可用的消费者值。有关几个代表性消费者配置及其对检测的影响的讨论,请参见 第 29.4.8 节,“示例消费者配置”。
global_instrumentation
是最高层级的消费者。如果global_instrumentation
为NO
,则会禁用全局检测。所有其他设置都处于较低层级,不会被检查;它们的设置无关紧要。不会维护全局或每个线程信息,并且不会在当前事件或事件历史表中收集任何单个事件。如果global_instrumentation
为YES
,则性能模式会维护全局状态信息,还会检查thread_instrumentation
消费者。thread_instrumentation
仅在global_instrumentation
为YES
时才会被检查。否则,如果thread_instrumentation
为NO
,则会禁用特定于线程的检测,并且所有较低层级的设置都将被忽略。不会维护每个线程信息,并且不会在当前事件或事件历史表中收集任何单个事件。如果thread_instrumentation
为YES
,则性能模式会维护特定于线程的信息,还会检查events_
消费者。xxx
_current
这些消费者需要 global_instrumentation
和 thread_instrumentation
都为 YES
,否则不会被检查。如果被检查,则它们的行为如下
events_waits_current
,如果为NO
,则会禁用在events_waits_current
表中收集单个等待事件。如果为YES
,则会启用等待事件收集,并且性能模式会检查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 语句摘要和采样”。