3
Seq Scan
Последовательное чтение всех страниц
страницы читаются в кеш (используется буферное кольцо)
проверяется видимость версий строк
данные возвращаются в произвольном порядке
время сканирования зависит от физического размера файла
14 3 5 2 1 10 12 8 7 13 11 4 9 6
В распоряжении оптимизатора имеется несколько способов доступа
к данным. Самый простой из них — последовательное сканирование
таблицы. Файл (или файлы) таблицы читается постранично от начала
до конца. При этом рассматриваются все версии строк на каждой
странице: удовлетворяют ли они условиям запроса и соблюдены ли
правила видимости.
Напомним, что чтение происходит через буферный кеш. Чтобы
большая таблица не вытеснила все полезные данные, для
последовательного сканирования создается «кольцо буферов»
небольшого размера. При этом другие процессы, одновременно
выполняющие последовательное сканирование той же таблицы,
«присоединяются» к тому же кольцу и тем самым экономят дисковые
чтения (если процесс присоединился не сразу, он затем отдельно
дочитывает начальные страницы таблицы).
Последовательное чтение файла позволяет использовать тот факт, что
операционная система обычно читает данные порциями больше, чем
размер страницы: с большой вероятностью несколько следующих
страниц уже окажутся в кеше ОС.
Последовательное сканирование эффективно работает, когда надо
прочитать всю таблицу или значительную ее часть (если селективность
условия низка). Если же из всей таблицы нужна только небольшая
часть записей, более предпочтительными являются методы доступа,
использующие индекс.