Skip to content

setup_instruments

xiaoboluo768 edited this page Jun 8, 2020 · 2 revisions
  • setup_instruments表列出了可以收集事件的instruments,即代表了哪些事件支持被收集:
mysql> SELECT * FROM setup_instruments;
+------------------------------------------------------------+---------+-------+
| NAME                                                      | ENABLED | TIMED |
+------------------------------------------------------------+---------+-------+
...
| 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  |
...
  • 在源代码中每一个实现的instruments,如果该源代码被加载到server中,那么在该表中就会有一行对应的配置,当启用或执行instruments时,会创建对应的instruments实例,这些实例在* _instances表中可以查看到
  • 大多数setup_instruments配置行修改会立即影响监控,但对于某些instruments,运行时修改不生效(配置表可以修改,但不生效),只有在启动之前修改才会生效(使用system variables写到配置文件中),不生效的instruments主要有mutexes, conditions, and rwlocks
  • 有关如何配置setup_instruments表,详见2.3.3.1. "Pre-Filtering" by instruments小节
  • setup_instruments表字段详解如下:
    • NAME:instruments名称,instruments名称可能具有多个部分并形成层次结构,如2.3.3.1. "Pre-Filtering" by instruments小节中所述。当instruments被执行时,产生的事件名称就取自instruments的名称,事件没有真正的名称,直接使用instruments来作为事件的名称,可以将instruments与产生的事件进行关联
    • ENABLED:instrumetns是否启用,有效值为YES或NO,此列可以使用UPDATE语句修改。如果设置为NO,则这个instruments不会被执行,不会产生任何的事件信息
    • TIMED:instruments是否收集时间信息,有效值为YES或NO,此列可以使用UPDATE语句修改,如果设置为NO,则这个instruments不会收集时间信息
  • 对于内存instruments,setup_instruments中的TIMED列将被忽略(使用update语句对这些内存instruments设置timed列为YES时可以执行成功,但是你会发现执行update之后select这些instruments的timed列还是NO),因为内存操作没有定时器信息
  • 如果某个instruments的enabled设置为YES(表示启用这个instruments),但是timed列未设置为YES(表示计时器功能禁用),则instruments会产生事件信息,但是事件信息对应的TIMER_START,TIMER_END和TIMER_WAIT定时器值都为NULL。后续汇总表中计算sum,minimum,maximum和average时间值时会忽略这些null值
  • setup_instruments表不允许使用TRUNCATE TABLE语句
  • 表定义语句
CREATE TABLE `setup_instruments` (
  `NAME` varchar(128) NOT NULL,
  `ENABLED` enum('YES','NO') NOT NULL,
  `TIMED` enum('YES','NO') NOT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8

上一篇: setup_consumers表 | 下一篇: setup_objects表

Clone this wiki locally