事件以生产者/消费者的方式处理:
仪表代码是事件的源,并生成要收集的事件。这
setup_instruments
表列出了可以收集事件的仪器,无论是否启用它们,以及(用于启用仪器)是否收集时间信息:mysql>选择名称,启用,从performence_schema.setup_instrumber定时;+ ------------------------------------------- + --------- + ------- + |名称|启用|定时|+ ------------------------------------------- + --------- + ------- + ... |等待/同步/互斥/ SQL / LOCK_GLOBAL_READ_LOCK |是的是的| wait/synch/mutex/sql/LOCK_global_system_variables | YES | YES | | wait/synch/mutex/sql/LOCK_lock_db | YES | YES | | wait/synch/mutex/sql/LOCK_manager | YES | YES | ...
这
setup_instruments
表提供了对事件生产的最基本的控制形式。为了进一步基于所监测的物体类型或线程的类型来进一步改进事件生成,可以如上所述使用其他表第27.4.3节“事件预筛选”。性能架构表是事件和消耗事件的目的地。这
setup_consumers.
表列出了可以发送事件信息的消费者类型以及是否已启用:mysql> select * from performence_schema.setup_consumers;+ ------------------------------ + --------- + |名称|启用|+ ------------------------------ + --------- + |events_stages_current |不||events_stages_history |不| | 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 | +----------------------------------+---------+
过滤可以在性能监控的不同阶段进行:
预滤器。这是通过修改性能架构配置来完成的,因此只从生产者收集某些类型的事件,并收集的活动仅更新某些消费者。为此,启用或禁用仪器或消费者。预过滤由性能模式完成,并具有适用于所有用户的全局效果。
使用预过滤的原因:
减少开销。即使启用所有仪器,性能架构开销也应该是最小的,但也许您希望进一步减少它。或者您不关心时序事件,并希望禁用定时代码以消除时序开销。
避免使用您没有兴趣的事件填充当前事件或历史表。预过滤叶更多“房间“在这些表中,用于启用仪器类型的行的实例。如果您只能使用预筛选只启用文件仪器,则不会为非文件仪器收集行。通过后滤线,收集非文件事件,为文件事件留下较少的行。
避免维护某种活动表。如果禁用消费者,则服务器不会花费时间维护该消费者的目标。例如,如果您不关心事件历史,则可以禁用历史表消费者以提高性能。
后过滤。这涉及使用
在哪里
查询中的子句从性能模式表中选择信息,以指定要查看的哪些可用事件。过滤后,按用户执行,因为单独的用户选择哪些可用事件是感兴趣的。使用后过滤的原因:
为避免为个人用户做出决定,其中有关哪些事件信息感兴趣。
要使用性能模式,请在使用预先过滤的限制时调查性能问题。
以下部分提供了有关预筛选的更多详细信息,并提供了在过滤操作中的命名器械或消费者的指导方针。有关写入查询以检索信息(过滤后)的信息,请参阅第27.5节“绩效架构查询”。