• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 消费者的预过滤

    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值设置为YESNO

    对该setup_consumers表的修改将立即影响监视。

    如果禁用使用者,则服务器不会花费时间维护该使用者的目的地。例如,如果您不关心历史事件信息,请禁用历史记录使用者:

    UPDATE performance_schema.setup_consumers
    SET ENABLED = 'NO'
    WHERE NAME LIKE '%history%';
    

    setup_consumers表中的使用者设置构成了从较高级别到较低级别的层次结构。适用以下原则:

    • 除非性能架构检查使用者并启用了使用者,否则与使用者相关联的目标不会接收任何事件。
    • 仅当启用了它依赖的所有使用者(如果有)时,才检查该使用者。
    • 如果未选中某个使用方,或者选中了某个使用方但将其禁用,则不检查其他依赖它的使用方。
    • 从属消费者可以有自己的从属消费者。
    • 如果事件不会发送到任何目的地,则性能架构不会产生该事件。

    以下列表描述了可用的消费者值。有关几种代表性的使用者配置及其对仪器的影响的讨论,请参见“示例使用者配置”。

    • 全球和线程消费者
    • 等待事件的消费者
    • 舞台活动的消费者
    • 声明事件消费者
    • 交易事件消费者
    • 声明摘要消费者

    全球和线程消费者

    • global_instrumentation是最高级别的消费者。如果global_instrumentationNO,则禁用全局检测。所有其他设置均为较低级别,不进行检查;设置为什么无关紧要。在当前事件或事件历史记录表中,不维护全局或每个线程的信息,也不收集单个事件。如果global_instrumentationYES,则“性能模式”将维护全局状态的信息,并检查thread_instrumentation使用者。
    • thread_instrumentation检查仅global_instrumentationYES。否则,如果thread_instrumentationNO,则它将禁用特定于线程的检测,并且所有较低级别的设置都将被忽略。每个线程均不维护任何信息,并且当前事件或事件历史表中未收集任何单独的事件。如果thread_instrumentationYES,则“性能模式”将维护特定于线程的信息并检查使用者。events_xxx_current

    等待事件的消费者

    这些消费者既需要global_instrumentationthread_instrumentationYES,否则将无法检查。如果选中,它们的行为如下:

    • events_waits_current,如果为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表中等待事件的收集。

    舞台活动的消费者

    这些消费者既需要global_instrumentationthread_instrumentationYES,否则将无法检查。如果选中,它们的行为如下:

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

    声明事件消费者

    这些消费者既需要global_instrumentationthread_instrumentationYES,否则将无法检查。如果选中,它们的行为如下:

    • 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不检查是否events_statements_currentNO。否则,events_statements_history_long值为NOYES禁用或启用events_statements_history_long表中语句事件的收集。

    交易事件消费者

    这些消费者既需要global_instrumentationthread_instrumentationYES,否则将无法检查。如果选中,它们的行为如下:

    • events_transactions_current,如果为NO,则禁用events_transactions_current表中各个交易事件的收集。如果为YES,则启用事务事件收集,并且性能架构检查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_instrumentationYES,或者不进行检查。不依赖于语句事件使用者,因此您可以按摘要获取每个摘要的统计信息,而不必收集中的统计信息events_statements_current,这在开销方面很有优势。相反,您可以获取events_statements_current不带摘要的详细语句(DIGESTDIGEST_TEXT列将为NULL)。

    有关语句摘要的更多信息,请参见“性能模式语句摘要和采样”。