## 27.8 性能模式原子和分子事件

对于一个表 I/O 事件，通常有两行[`events_waits_current`](performance-schema-events-waits-current-table.html)， 不是一个。例如，行提取可能会产生如下行：

```
Row# EVENT_NAME                 TIMER_START TIMER_END
---- ----------                 ----------- ---------
   1 wait/io/file/myisam/dfile        10001 10002
   2 wait/io/table/sql/handler        10000 NULL
```

行提取导致文件读取。在示例中，表 I/O 提取事件在文件 I/O 事件之前开始但尚未完成（其`TIMER_END`值为`空值`）。文件 I/O 事件“嵌套”在表 I/O 事件中。

发生这种情况是因为，与其他“原子”等待事件（例如互斥锁或文件 I/O）不同，表 I/O 事件是“分子的”并且包含（与）其他事件。在[`events_waits_current`](performance-schema-events-waits-current-table.html)，表 I/O 事件通常有两行：

-   一行表示最近的表 I/O 等待事件

-   一行表示任何类型的最新等待事件

    通常，但不总是，“任何类型的”等待事件不同于表 I/O 事件。随着每个附属事件的完成，它会从[`events_waits_current`](performance-schema-events-waits-current-table.html).此时，直到下一个辅助事件开始，表 I/O 等待也是任何类型的最近等待。
