Почитал про это ожидание на форуме. Но из того, что нашёл, так чёткого понимания и нет - в каких случаях Oracle использует данное ожидание?
В доке написано:
автор |
---|
db file parallel read
This happens during recovery. It can also happen during buffer prefetching, as an optimization (rather than performing multiple single-block reads). Database blocks that need to be changed as part of recovery are read in parallel from the database. |
Сначала я думал, что это используется когда идёт параллельный доступ через индекс.
Однако я поймал запрос, который в тексте не имел никакого указания на параллелизм, у таблицы и у индекса DEGREE=1(0). При этом происходило чтение одновременно 9-ти дата-файлов, текущим объектом была таблица.
В плане было:
TABLE ACCESS BY INDEX ROWID
И ASH репорт тоже показал, что наиболее нагруженные были именно те датафайлы, в которых расположена таблица.
То есть налицо параллельный доступ к таблице, но не через direct path, а через db file parallel read.
При этом в БД получается наблюдается нехилая просадка производительности.
Когда данная сессия читает с помощью db file parallel read, 2-ве сотни сессий висят на read by other session.
Хотелось бы выслушать мнения специалистов.