性能架构工具会等待,这是需要时间的事件。在事件层次结构中,等待事件嵌套在阶段事件内,嵌套在语句事件内,嵌套在事务事件内。
这些表存储等待事件:
events_waits_current
:每个线程的当前等待事件。events_waits_history
:每个线程已结束的最新等待事件。events_waits_history_long
:全局(在所有线程中)结束的最新等待事件。
以下各节描述了等待事件表。也有汇总表,汇总有关等待事件的信息。请参见“等待事件摘要表”。
有关三个等待事件表之间的关系的更多信息,请参见“当前和历史事件的性能架构表”。
配置等待事件收集
要控制是否收集等待事件,请设置相关工具和使用者的状态:
- 该
setup_instruments
表包含名称以开头的乐器wait
。使用这些工具可以启用或禁用单个等待事件类的收集。 - 该
setup_consumers
表包含具有与当前和历史等待事件表名称相对应的名称的使用者值。使用这些使用者来筛选等待事件的集合。
默认情况下,某些等待工具处于启用状态。其他人被禁用。例如:
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 | +---------------------------------------- +--------- +------- +
默认情况下,禁用等待使用者:
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 = '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 = 'wait/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'NO' WHERE NAME LIKE 'events_waits%';
要仅收集特定的等待事件,请仅启用相应的等待工具。要仅为特定的等待事件表收集等待事件,请启用等待工具,但仅启用与所需表相对应的等待使用者。
有关配置事件收集的其他信息,请参见“性能架构启动配置”和“性能架构运行时配置”。