MySQL 8.3 Release Notes
setup_instruments
表列出了可用的仪器:
mysql> SELECT NAME, ENABLED, TIMED
FROM performance_schema.setup_instruments;
+---------------------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+---------------------------------------------------+---------+-------+
...
| stage/sql/end | NO | NO |
| stage/sql/executing | NO | NO |
| stage/sql/init | NO | NO |
| stage/sql/insert | NO | NO |
...
| statement/sql/load | YES | YES |
| statement/sql/grant | YES | YES |
| statement/sql/check | YES | YES |
| statement/sql/flush | YES | YES |
...
| wait/synch/mutex/sql/LOCK_global_read_lock | YES | YES |
| wait/synch/mutex/sql/LOCK_global_system_variables | YES | YES |
| wait/synch/mutex/sql/LOCK_lock_db | YES | YES |
| wait/synch/mutex/sql/LOCK_manager | YES | YES |
...
| wait/synch/rwlock/sql/LOCK_grant | YES | YES |
| wait/synch/rwlock/sql/LOGGER::LOCK_logger | YES | YES |
| wait/synch/rwlock/sql/LOCK_sys_init_connect | YES | YES |
| wait/synch/rwlock/sql/LOCK_sys_init_slave | YES | YES |
...
| wait/io/file/sql/binlog | YES | YES |
| wait/io/file/sql/binlog_index | YES | YES |
| wait/io/file/sql/casetest | YES | YES |
| wait/io/file/sql/dbopt | YES | YES |
...
要控制仪器是否启用,请将其 ENABLED
列设置为 YES
或 NO
。要配置是否收集启用仪器的计时信息,请将其 TIMED
值设置为 YES
或 NO
。设置 TIMED
列会影响性能模式表的内容,如 第 29.4.1 节,“性能模式事件计时”所述。
对大多数 setup_instruments
行的修改将立即影响监控。对于一些仪器,修改只有在服务器启动时生效,在运行时修改无效。这主要影响服务器中的互斥锁、条件和读写锁,尽管可能还有其他仪器受到这种影响。
setup_instruments
表提供了对事件生产的基本控制。要根据监控的对象或线程类型进一步细化事件生产,可以使用其他表,如 第 29.4.3 节,“事件预过滤”所述。
以下示例演示了对 setup_instruments
表的可能操作。这些更改,如其他预过滤操作,对所有用户都有效。一些查询使用 LIKE
运算符和模式匹配仪器名称。有关指定模式以选择仪器的更多信息,请参阅 第 29.4.9 节,“为过滤操作命名仪器或消费者”。
-
禁用所有仪器:
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO';
现在不再收集事件。
-
禁用所有文件仪器,添加到当前禁用仪器集中:
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO' WHERE NAME LIKE 'wait/io/file/%';
-
禁用仅文件仪器,启用所有其他仪器:
UPDATE performance_schema.setup_instruments SET ENABLED = IF(NAME LIKE 'wait/io/file/%', 'NO', 'YES');
-
启用所有仪器,但不包括
mysys
库中的仪器:UPDATE performance_schema.setup_instruments SET ENABLED = CASE WHEN NAME LIKE '%/mysys/%' THEN 'YES' ELSE 'NO' END;
-
禁用特定仪器:
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO' WHERE NAME = 'wait/synch/mutex/mysys/TMPDIR_mutex';
-
要切换仪器的状态,请 “flip” 其
ENABLED
值:UPDATE performance_schema.setup_instruments SET ENABLED = IF(ENABLED = 'YES', 'NO', 'YES') WHERE NAME = 'wait/synch/mutex/mysys/TMPDIR_mutex';
-
禁用所有事件的计时:
UPDATE performance_schema.setup_instruments SET TIMED = 'NO';