该threads表包含每个服务器线程的一行。每行包含有关线程的信息,并指示是否为其启用监控。对于监视线程的性能模式,这些事情必须是真实的:
表中的
thread_instrumentation消费者setup_consumers必须是YES。该
threads.INSTRUMENTED列必须是YES.仅对表中启用的工具生成的那些线程事件进行监视
setup_instruments。
表中的INSTRUMENTED列
threads表示每个线程的监控状态。对于前台线程(由客户端连接产生),初始
INSTRUMENTED值取决于与线程关联的用户帐户是否与setup_actors表中的任何行匹配。
对于后台线程,没有关联的用户。
默认情况下INSTRUMENTED是不咨询的。
YESsetup_actors
初始setup_actors内容如下所示:
mysql> SELECT * FROM performance_schema.setup_actors;
+------+------+------+
| HOST | USER | ROLE |
+------+------+------+
| % | % | % |
+------+------+------+
和列应包含文字主机名或用户名,或
HOST匹配任何名称。
USER'%'
Performance Schema 使用HOST和
USER列来匹配每个新的前台线程。(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
表的修改仅影响修改后创建的前台线程,而不影响现有线程。要影响现有线程,请修改表行的INSTRUMENTED列
threads。