25.12.2.3 setup_instrumentstable

setup_instrumentstable 列出了可为其收集事件的检测对象的类:

mysql> SELECT * 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   |
...

即使未执行检测的代码,添加到源代码中的每个工具也会为setup_instrumentstable 提供一行。启用并执行工具后,将创建已检测实例,这些实例在xxx_instancestable 中可见,例如file_instancesrwlock_instances

对大多数setup_instruments行的修改会立即影响监视。对于某些仪器,修改仅在服务器启动时有效。在运行时更改它们无效。这可能主要影响服务器中的互斥锁,条件和 rwlock,尽管可能存在其他适用于此的工具。

有关setup_instrumentstable 在事件过滤中的作用的更多信息,请参见第 25.4.3 节“事件预过滤”

setup_instrumentstable 具有以下列:

  • NAME

仪器名称。乐器名称可能包含多个部分,并形成一个层次结构,如第 25.6 节“性能架构工具命名约定”中所述。执行工具产生的事件具有从工具NAME值获取的EVENT_NAME值。 (事件实际上没有“名称”,但这提供了一种将事件与乐器关联的方法.)

  • ENABLED

仪器是否启用。该值为YESNO。禁用的乐器不产生任何事件。尽管设置ENABLED对已创建的乐器无效,但可以修改此列。

  • TIMED

仪器是否定时。该值为YESNO。尽管设置TIMED对已创建的乐器无效,但可以修改此列。

对于存储工具,由于未定时存储操作,因此会忽略setup_instruments中的TIMED列。

如果未对启用的仪器计时,则启用仪器代码,但计时器未启用。仪器产生的事件具有TIMER_STARTTIMER_ENDTIMER_WAIT计时器值的NULL。反过来,当在汇总 table 中计算总和,最小,最大和平均时间值时,这些值将被忽略。

setup_instrumentstable 不允许TRUNCATE TABLE