25.4.3 事件预过滤

预过滤是由性能模式完成的,并具有适用于所有用户的全局效果。可以将预过滤应用于事件处理的生产者或 Consumer 阶段:

  • 要在生产者阶段配置预过滤,可以使用几个 table:

  • setup_instruments指示可用的工具。不管其他与生产相关的设置 table 的内容如何,在该 table 中禁用的仪器均不会产生任何事件。允许该 table 中启用的工具生成事件,但要视其他 table 的内容而定。

    • setup_objects控制性能模式是否监视特定的 table 和存储的程序对象。

    • threads指示是否为每个服务器线程启用监视。

    • setup_actors确定新的前台线程的初始监视状态。

  • 要在使用者阶段配置预过滤,请修改setup_consumerstable。这确定了事件发送到的目的地。 setup_consumers还隐式影响事件的产生。如果给定事件不会被发送到任何目的地(即不会被使用),那么性能架构将不会生成该事件。

对这些 table 中任何一个的修改都会立即影响监视,但有一些 exception:

  • setup_instrumentstable 中某些工具的修改仅在服务器启动时有效;在运行时更改它们无效。这可能主要影响服务器中的互斥锁,条件和 rwlock,尽管可能存在其他适用于此的工具。自 MySQL 5.7.12 起,此限制已取消。

  • setup_actorstable 的修改仅影响在修改之后创建的前台线程,而不影响现有线程。

更改监视配置时,性能架构不会刷新历史记录 table。已经收集的事件将保留在当前事件和历史记录 table 中,直到被新事件取代。如果禁用了工具,则可能需要 await 一会儿,然后才能用新的关注事件取代它们的事件。或者,使用TRUNCATE TABLE清空历史记录 table。

更改工具后,您可能希望截断摘要 table。通常,结果是将摘要列重置为 0 或NULL,而不是删除行。这使您可以清除收集的值并重新开始聚合。例如,在更改运行时配置之后,这可能会很有用。截断行为的 exceptions 在各个摘要 table 部分中都有说明。

以下各节描述了如何使用特定的 table 来控制性能模式预过滤。