事件以生产者/消费者的方式处理:
插装代码是事件的源,并生成要收集的事件。的
setup_instruments
表中列出了可以收集事件的仪器、是否启用以及是否收集定时信息:mysql> SELECT NAME, ENABLED, TIMED FROM performance_schema.setup_instruments;+---------------------------------------------------+---------+-------+ | 名字| |定时启用 | +---------------------------------------------------+---------+-------+ ...|等待/同步/互斥锁/ sql / LOCK_global_read_lock |是的| | |等待/同步/互斥锁/ sql / LOCK_global_system_variables |是的| | |等待/同步/互斥锁/ sql / LOCK_lock_db |是的| | |等待/同步/互斥/ sql / LOCK_manager |是的| |…
的
setup_instruments
Table提供了对事件生产的最基本的控制形式。要根据被监视的对象或线程的类型进一步细化事件生产,可以使用其他表,如中所述第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节,“性能模式查询”.