消费者的预过滤
下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_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_consumersSET ENABLED = 'NO'WHERE NAME LIKE '%history%';
该setup_consumers
表中的使用者设置构成了从较高级别到较低级别的层次结构。适用以下原则:
- 除非性能架构检查使用者并启用了使用者,否则与使用者相关联的目标不会接收任何事件。
- 仅当启用了它依赖的所有使用者(如果有)时,才检查该使用者。
- 如果未选中某个使用方,或者选中了某个使用方但将其禁用,则不检查其他依赖它的使用方。
- 从属消费者可以有自己的从属消费者。
- 如果事件不会发送到任何目的地,则性能架构不会产生该事件。
以下列表描述了可用的消费者值。有关几种代表性的使用者配置及其对仪器的影响的讨论,请参见“示例使用者配置”。
- 全球和线程消费者
- 等待事件的消费者
- 舞台活动的消费者
- 声明事件消费者
- 交易事件消费者
- 声明摘要消费者
全球和线程消费者
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
,则启用阶段事件收集,并且性能架构检查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_current
,如果为NO
,则禁用events_statements_current
表中单个语句事件的收集。如果为YES
,则启用语句事件收集,并且性能架构检查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
,则启用事务事件收集,并且性能架构检查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
)。
有关语句摘要的更多信息,请参见“性能模式语句摘要和采样”。