Documentation Home

22.4.6 按线程预过滤

threads表包含每个服务器线程的一行。每行包含有关线程的信息,并指示是否为其启用监控。对于监视线程的性能模式,这些事情必须是真实的:

  • 表中的thread_instrumentation消费者setup_consumers必须是YES

  • threads.INSTRUMENTED列必须是 YES.

  • 仅对表中启用的工具生成的那些线程事件进行监视 setup_instruments

表中的INSTRUMENTEDthreads表示每个线程的监控状态。对于前台线程(由客户端连接产生),初始 INSTRUMENTED值取决于与线程关联的用户帐户是否与setup_actors表中的任何行匹配。

对于后台线程,没有关联的用户。 默认情况下INSTRUMENTED是不咨询的。 YESsetup_actors

初始setup_actors内容如下所示:

mysql> SELECT * FROM performance_schema.setup_actors;
+------+------+------+
| HOST | USER | ROLE |
+------+------+------+
| %    | %    | %    |
+------+------+------+

和列应包含文字主机名或用户名,或 HOST匹配任何名称。 USER'%'

Performance Schema 使用HOSTUSER列来匹配每个新的前台线程。(ROLE未使用。) 如果有任何行匹配,则INSTRUMENTED线程的值变为 , 否则。这使得可以根据主机、用户或主机和用户的组合有选择地应用检测。 YESNO

默认情况下,为所有新的前台线程启用监控,因为该setup_actors表最初包含一个包含'%'HOST的行USER。要执行更有限的匹配,例如仅对某些前台线程启用监控,您必须删除该行,因为它匹配任何连接。

假设你修改 setup_actors如下:

TRUNCATE TABLE performance_schema.setup_actors;

现在setup_actors是空的,没有可以匹配传入连接的行。因此,性能模式将INSTRUMENTED 列设置为NO用于所有新的前台线程。

假设您进一步修改 setup_actors

INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE) VALUES('localhost','joe','%');
INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE) VALUES('%','sam','%');

现在 Performance Schema 确定如何 INSTRUMENTED为新连接线程设置值,如下所示:

  • 如果joe从本地主机连接,连接匹配第一个插入的行。

  • 如果joe从任何其他主机连接,则没有匹配项。

  • 如果sam从任何主机连接,连接匹配第二个插入的行。

  • 对于任何其他连接,都没有匹配项。

setup_actors 表的修改仅影响修改后创建的前台线程,而不影响现有线程。要影响现有线程,请修改表行的INSTRUMENTEDthreads