MySQL 8.4 Release Notes
29.8 性能模式原子和分子事件
对于一个表I/O事件,通常在events_waits_current
中有两个行,而不是一行。例如,一次行fetch可能会产生以下几行:
Row# EVENT_NAME TIMER_START TIMER_END
---- ---------- ----------- ---------
1 wait/io/file/myisam/dfile 10001 10002
2 wait/io/table/sql/handler 10000 NULL
该行fetch导致文件读取。在示例中,表I/O fetch事件开始在文件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等待也是最近一次任何类型的等待。