### 27.12.4 性能模式等待事件表

[27.12.4.1 事件\_等待\_当前表](performance-schema-events-waits-current-table.html)
[27.12.4.2 事件\_等待\_历史表](performance-schema-events-waits-history-table.html)
[27.12.4.3 事件\_等待\_历史\_长桌](performance-schema-events-waits-history-long-table.html)

性能模式仪器等待，这是需要时间的事件。在事件层次结构中，等待事件嵌套在阶段事件中，阶段事件嵌套在语句事件中，而语句事件嵌套在事务事件中。

这些表存储等待事件：

-   [`events_waits_current`](performance-schema-events-waits-current-table.html)：每个线程的当前等待事件。

-   [`events_waits_history`](performance-schema-events-waits-history-table.html)：每个线程结束的最近等待事件。

-   [`events_waits_history_long`](performance-schema-events-waits-history-long-table.html)：最近全局结束的等待事件（跨所有线程）。

    以下部分描述了等待事件表。还有汇总表，汇总有关等待事件的信息；看[第 27.12.20.1 节，“等待事件汇总表”](performance-schema-wait-summary-tables.html).

    有关三个等待事件表之间关系的更多信息，请参阅[第 27.9 节，“当前和历史事件的性能模式表”](performance-schema-event-tables.html).

#### 配置等待事件收集

要控制是否收集等待事件，请设置相关仪器和消费者的状态：

-   这[`setup_instruments`](performance-schema-setup-instruments-table.html)表包含名称以开头的仪器`等待`.使用这些工具来启用或禁用单个等待事件类的收集。

-   这[`setup_consumers`](performance-schema-setup-consumers-table.html)表包含名称对应于当前和历史等待事件表名称的消费者值。使用这些消费者过滤等待事件的集合。

    一些等待工具默认启用；其他人被禁用。例如：


```
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      |
+---------------------------+---------+
```

要在服务器启动时控制等待事件收集，请在您的`我的.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`](performance-schema-setup-instruments-table.html)和[`setup_consumers`](performance-schema-setup-consumers-table.html)表：

-   使能够：

    ```
    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%';
    ```

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

    有关配置事件收集的更多信息，请参阅[第 27.3 节，“性能模式启动配置”](performance-schema-startup-configuration.html)， 和[第 27.4 节，“性能模式运行时配置”](performance-schema-runtime-configuration.html).
