5.6线程预过滤

线程表包含每个服务器线程的一行。每一行包含关于线程的信息,并指示是否为其启用了监视。为了让性能模式监视线程,以下条件必须为真:

  • thread_instrumentation消费者在setup_consumers表必须是的

  • 线程。检测列必须是的

  • 控件中启用的仪器产生的线程事件才会发生监视setup_instruments表格

线程表还指示每个服务器线程是否执行历史事件日志记录。这包括等待、阶段、语句和事务事件,并影响到这些表的日志记录:

Events_waits_history events_waits_history_long events_stages_history events_statements_history events_statements_history_long events_transactions_history events_transactions_history_long

要发生历史事件日志,必须满足以下条件:

对于前台线程(由客户机连接产生),的初始值检测而且历史线程表中的行由与线程关联的用户帐户是否匹配setup_actors表格值来自启用而且历史匹配的列setup_actors表行。

对于后台线程,没有关联的用户。检测而且历史是的默认情况下,setup_actors不是咨询。

最初的setup_actors内容如下所示:

SELECT * FROM performance_schema.setup_actors;+------+------+------+---------+---------+ | 主机用户| | | |启用历史作用  | +------+------+------+---------+---------+ | % | % | % | 是的|是的  | +------+------+------+---------+---------+

宿主而且用户列应该包含主机或用户名的文字“%”来匹配任何名称。

启用而且历史列指示是否为匹配线程启用检测和历史事件日志记录,取决于前面描述的其他条件。

当性能模式为每个新的前台线程检查匹配时setup_actors,它首先尝试查找更特定的匹配项,使用用户而且宿主列(角色是未使用的):

  • 用户= '文字而且主机= '文字

  • 用户= '文字而且主机= ' % '

  • 用户= ' % '而且主机= '文字

  • 用户= ' % '而且主机= ' % '

匹配发生的顺序很重要,因为不同的匹配setup_actors行可以有不同的用户而且宿主值。这使检测和历史事件日志记录能够根据启用而且历史列值:

  • 当最好的配是一排配启用= YES,检测线程的值变为是的.当最好的配是一排配历史= YES,历史线程的值变为是的

  • 当最好的配是一排配启用=没有,检测线程的值变为没有.当最好的配是一排配历史=没有,历史线程的值变为没有

  • 如果没有找到匹配,则检测而且历史线程的值变为没有

启用而且历史setup_actors行可以设置为是的没有彼此独立。这意味着您可以与是否收集历史事件分开启用检测。

默认情况下,监视和历史事件收集是为所有新的前台线程启用的,因为setup_actors表最初包含的行“%”对于这两个宿主而且用户.要执行更有限的匹配,例如只对某些前台线程启用监视,您必须更改此行,因为它匹配任何连接,并添加更特定的行宿主/用户组合。

假设你修改setup_actors如下:

更新performance_schema。setup_actorsSET ENABLED = 'NO', HISTORY = 'NO' WHERE HOST = '%' AND USER = '%'; INSERT INTO performance_schema.setup_actors (HOST,USER,ROLE,ENABLED,HISTORY) VALUES('localhost','joe','%','YES','YES'); INSERT INTO performance_schema.setup_actors (HOST,USER,ROLE,ENABLED,HISTORY) VALUES('hosta.example.com','joe','%','YES','NO'); INSERT INTO performance_schema.setup_actors (HOST,USER,ROLE,ENABLED,HISTORY) VALUES('%','sam','%','NO','YES');

更新语句更改默认匹配,以禁用检测和历史事件收集。的插入语句为更特定的匹配添加行。

现在,性能模式决定如何设置检测而且历史新连接线程的值如下:

  • 如果从本地主机连接,连接匹配第一个插入的行。的检测而且历史线程的值变为是的

  • 如果连接从hosta.example.com,则连接匹配第二个插入的行。的检测线程的值变为是的历史价值就没有

  • 如果从任何其他主机连接,没有匹配。的检测而且历史线程的值变为没有

  • 如果山姆从任何主机连接,连接匹配插入的第三行。的检测线程的值变为没有历史价值就是的

  • 对于任何其他连接,与宿主而且用户设置为“%”匹配。这一行现在有启用而且历史设置为没有,所以检测而且历史线程的值变为没有

修改setup_actors表只影响修改后创建的前台线程,不影响现有线程。要影响现有线程,请修改检测而且历史线程表行。