• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: MySQL 8 中文手册 -> MySQL 性能模式

    性能架构等待事件表

    性能架构工具会等待,这是需要时间的事件。在事件层次结构中,等待事件嵌套在阶段事件内,嵌套在语句事件内,嵌套在事务事件内。

    这些表存储等待事件:

    • 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_instrumentssetup_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%';
      

    要仅收集特定的等待事件,请仅启用相应的等待工具。要仅为特定的等待事件表收集等待事件,请启用等待工具,但仅启用与所需表相对应的等待使用者。

    有关配置事件收集的其他信息,请参见“性能架构启动配置”和“性能架构运行时配置”。