События ожидания Oracle: что вы интерпретируете в БД, разбросанных / последовательно прочитанных? - PullRequest
6 голосов
/ 31 июля 2011

Давайте сделаем два примера: Полное сканирование таблицы приводит к этому результату:

                               TOTAL   TIME
EVENT                          WAITS WAITED
------------------------------ ----- ------
db file scattered read           460     13

Это результат доступа через неселективное сканирование диапазона индекса:

                               TOTAL   TIME
EVENT                          WAITS WAITED
------------------------------ ----- ------
db file scattered read            15      3
db file sequential read         6209    140

Iхотел бы ожидать разбросанных чтений после получения большого количества rowid из неселективного индекса.И только одно последовательное чтение, чтобы прочитать всю таблицу в дефрагментированной системе ввода-вывода.

Можете ли вы объяснить мне, как читать эти данные?

1 Ответ

5 голосов
/ 31 июля 2011

Названия этих двух событий ожидания довольно запутанные. Оба они означают узкие места ввода / вывода: db file scattered read обычно происходит из многоблочных чтений, что означает полное сканирование таблицы, тогда как db file sequential read обычно происходит из одноблочных чтений, что означает индексированные чтения.

Существуют различные теории о причине , почему Инженеры Oracle дали этим событиям такие явно вводящие в заблуждение названия. От всей души рекомендую вам прочитать эссе Эрика Эмрика на эту тему: Почему рассеялись мысли о чтениях Oracle?


Что касается интерпретации данных, индексированное чтение - это, по крайней мере, два логических чтения: просмотр индекса, за которым следует поиск строки таблицы, указанной в таблице. Такие вещи, как перенесенные строки, могут увеличить количество операций чтения. Таким образом, чтение большого количества строк через индекс является дорогой операцией. Принимая во внимание, что полное сканирование таблицы может просто поднять строки с использованием многоблочных чтений: это требует много строк для одного логического чтения. Вот почему полное сканирование таблицы обычно более эффективно для извлечения даже относительно небольшого процента от общего числа строк таблицы.

...