Классика баз данных - статьи

       

Оптимизатор может воспользоваться последовательным упреждающим


Оптимизатор может воспользоваться последовательным упреждающим чтением при сканировании таблицы, временной таблицы или кластеризованного индекса. При любом сканировании таблицы будет использоваться последовательное упреждающее чтение, если только таблица пространства (для сегментированной таблицы) не показывает, что в таблице содержится очень мало страниц данных, или если в запросе содержится раздел OPTIMIZE FOR N ROWS с небольшим значением N. Последовательное упреждающее чтение со скачками основано на специальных возможностях ввода-вывода MVS для асинхронного чтения списка страниц, которые упорядочены, но не обязательно смежны. Такой список страниц появляется, например, при чтении страниц на основе упорядоченного списка RID’ов. Обычно для этих разновидностей ввода-вывода имеются разные оценочные формулы.

Менеджер данных в DB2 для MVS может также распознавать фактический последовательный доступ во время выполнения и обеспечивать обнаруживаемое упреждающее чтение. Оптимизатор пытает моделировать такие ситуации всегда, когда это возможно. Например, в тех случаях, когда внешний источник ввода соединения методом вложенных циклов полностью упорядочен, упреждающее чтение, вероятно, будет обнаружено во время выполнения для сканирования индекса и, возможно, страниц данных внутренней таблицы. Наконец, в DB2 для MVS пользователь может выбирать размер страницы в 32К или 4К при создании таблицы. Размер страницы влияет на характеристики ввода-вывода, и это моделируется в оптимизаторе.

В DB2 для MVS имеется возможность сжимать или шифровать данные на уровне строки. Стоимость распаковки или дешифрации моделируется оптимизатором.

В DB2 для MVS также можно оптимизировать запрос для использования параллелизма ввода-вывода. Эта возможность является новой для DB2 Version 3. Поскольку это очень сложное и новое средство, оно не рассматривается в этой статье.

В DB2/* с использованием Starburst также будет распознаваться последовательный доступ во время выполнения и производиться упреждающее чтение данных, в отличие от DB2/6000 Version 1, в которой распознавание последовательного доступа возложено на операционную систему.Также можно будет выбрать упреждающее чтение листовых страниц индекса в зависимости от их положения на диске. Этот механизм будет тесно увязан с основанной на экстентах системой хранения, чтобы использовать многоблочный ввод-вывод. Тот же самый механизм будет использоваться для обеспечения поддержки последовательного упреждающего чтения с прыжками.


Содержание  Назад  Вперед