29.12.4 Performance Schema 等待事件表
Performance Schema instruments 等待事件,这些事件需要时间。在事件层次结构中,等待事件嵌套在阶段事件中,阶段事件嵌套在语句事件中,语句事件嵌套在事务事件中。
这些表格存储等待事件:
-
events_waits_current
:每个线程的当前等待事件。 -
events_waits_history
:每个线程的最近结束的等待事件。 -
events_waits_history_long
:全球所有线程的最近结束的等待事件。
以下部分描述了等待事件表格。还有一些汇总表格,汇总了等待事件的信息;见Section 29.12.20.1, “Wait Event Summary Tables”。
关于三个等待事件表格之间的关系,见Section 29.9, “Performance Schema Tables for Current and Historical Events”。
要控制是否收集等待事件,设置相关的instrument和consumer:
-
setup_instruments
表包含名称以wait
开头的instrument。使用这些instrument来启用或禁用单个等待事件类别的收集。 -
setup_consumers
表包含consumer值,名称对应当前和历史等待事件表格的名称。使用这些consumer来过滤等待事件的收集。
一些等待instrument默认启用,另一些默认禁用。例如:
mysql> SELECT NAME, ENABLED, TIMED
FROM performance_schema.setup_instruments
WHERE NAME LIKE 'wait/io/file/innodb%';
+-------------------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+-------------------------------------------------+---------+-------+
| wait/io/file/innodb/innodb_tablespace_open_file | YES | YES |
| wait/io/file/innodb/innodb_data_file | YES | YES |
| wait/io/file/innodb/innodb_log_file | YES | YES |
| wait/io/file/innodb/innodb_temp_file | YES | YES |
| wait/io/file/innodb/innodb_arch_file | YES | YES |
| wait/io/file/innodb/innodb_clone_file | YES | YES |
+-------------------------------------------------+---------+-------+
mysql> SELECT NAME, ENABLED, TIMED
FROM performance_schema.setup_instruments
WHERE NAME LIKE 'wait/io/socket/%';
+----------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+----------------------------------------+---------+-------+
| wait/io/socket/sql/server_tcpip_socket | NO | NO |
| wait/io/socket/sql/server_unix_socket | NO | NO |
| wait/io/socket/sql/client_connection | NO | NO |
+----------------------------------------+---------+-------+
等待consumer默认禁用:
mysql> SELECT *
FROM performance_schema.setup_consumers
WHERE NAME LIKE 'events_waits%';
+---------------------------+---------+
| NAME | ENABLED |
+---------------------------+---------+
| events_waits_current | NO |
| events_waits_history | NO |
| events_waits_history_long | NO |
+---------------------------+---------+
在服务器启动时控制等待事件收集,可以在 my.cnf
文件中添加以下行:
-
启用:
[mysqld] performance-schema-instrument='wait/%=ON' performance-schema-consumer-events-waits-current=ON performance-schema-consumer-events-waits-history=ON performance-schema-consumer-events-waits-history-long=ON
-
禁用:
[mysqld] performance-schema-instrument='wait/%=OFF' performance-schema-consumer-events-waits-current=OFF performance-schema-consumer-events-waits-history=OFF performance-schema-consumer-events-waits-history-long=OFF
在运行时控制等待事件收集,可以更新 setup_instruments
和 setup_consumers
表:
-
启用:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'wait/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_waits%';
-
禁用:
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO', TIMED = 'NO' WHERE NAME LIKE 'wait/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'NO' WHERE NAME LIKE 'events_waits%';
要只收集特定的等待事件,可以只启用相应的等待工具。要只收集特定的等待事件表,可以启用等待工具,但只启用与所需表对应的等待消费者。
关于配置事件收集的详细信息,请见 第29.3节,“Performance Schema Startup Configuration”,和 第29.4节,“Performance Schema Runtime Configuration”。