MySQL 8.4 发行说明
对于表 I/O 事件,events_waits_current
中通常有两行,而不是一行。例如,行提取可能会导致如下所示的行
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
值为 NULL
)。文件 I/O 事件“嵌套”在表 I/O 事件中。
发生这种情况是因为,与互斥锁或文件 I/O 等其他“原子”等待事件不同,表 I/O 事件是“分子”事件,包括(与)其他事件重叠。在 events_waits_current
中,表 I/O 事件通常有两行
一行用于最新的表 I/O 等待事件
一行用于任何类型的最新等待事件
通常情况下(但并非总是如此),“任何类型的”等待事件与表 I/O 事件不同。随着每个子事件完成,它会从 events_waits_current
中消失。此时,直到下一个子事件开始之前,表 I/O 等待也是任何类型的最新等待。