テーブル I/O イベントの場合、events_waits_current
には通常 1 行ではなく、2 行あります。 たとえば、行フェッチにより、次のような行になる可能性があります。
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 イベントには通常 2 つの行があります。
最新のテーブル I/O 待機イベントについての 1 行
任意の種類の最新の待機イベントについての 1 行
通常、ただし常にではありませんが、「どの種類の」待機イベントもテーブル I/O イベントと異なります。 各従属イベントが完了すると、それは events_waits_current
から消去されます。 この時点で、および次の従属イベントが開始されるまで、テーブル I/O 待機は、あらゆる種類の最新の待機でもあります。