Создание планов запросов

Оценить
(0 голоса)

QEPs (Query Execution Plans - планы выполнения запросов) могут помочь вам разобраться в поведении запроса. Если вы только что создали индекс, то, например, нет никакой гарантии того, что оптимизатор будет использовать этот индекс. QEP проливает свет на стратегию, которую использует оптимизатор для выполнения конкретного запроса. Оптимизаторы обсуждаются в главе 8.

Если оператору языка SQL предшествует команда set explain on, то план выполнения запросов будет выведен в файл, имеющий имя sqexplain.out, в текущем каталоге. Далее показывается содержимое одного такого файла sqexplain.out. QUERY:

Оптимизатор оценивает значение показателя Estimated Cost (предполагаемая стоимость) для ряда возможных планов и выбирает план с самой низкой стоимостью. Единица измерения, используемая при оценивании стоимости запроса, приблизительно эквивалентна типичному значению времени доступа к диску. Значение Estimated of Rows Returned (ожидаемое количество возвращенных строк) основано на статистике, накопленной по таблицам (дополнительная информация по этому вопросу представлена в разделе "Накопление статистики" этой главы).

В приведенном плане используются последовательные сканирования, чтобы считывать данных из грех таблиц, и хэш-объединения в качестве стратегии слияния данных. Наконец, сортировка призвана выполнить условие, заданное предложением order by. Используются шесть потоков. В столбце width показывается количество потоков, выделенных для каждой операции.

В процессе хеш-объединения для первой таблицы сформирована хэш-структура, и каждая строка второй таблицы используется для того, чтобы исследовать эту структуру. Для каждой операции задаются индивидуальные детали, включая номер взаимодействующего сервера, количество строк, вовлеченных в операцию, и размер памяти (Кбайт), требуемой для того, чтобы сформировать хэш-таблицу (столбец mem). Ненулевой результат в столбце ovfl означает, что хэш-объединение распространилось в область временного пространства; параметр PDQPRIORITY регулирует выделение ресурсов памяти (этот параметр описан в разделе "Ресурсы памяти" этой главы) и помогает гарантировать, что данному запросу предоставляется достаточное количество памяти. Если в столбцах ovfl или mem появляется значение -1, то это означает, что оператор не сформировал хэш-таблицу.

Если выполняется параллельное сканирование, то сообщается о любом исключении фрагментов. Приведенная строка показывает план, включающий исключение фрагментов и оставляющий для сканирования только шесть фрагментов.

В рассматриваемом случае использовалась утилита xctl для того, чтобы получить шформацию буферного пула для всех взаимодействующих серверов (в данном случае IX два).

Частота попаданий в кэш чтения, % cached, появляется сразу после столбца 3ufreads в первой строке статистики. Значения в столбцах dskreads и dskwrits по-сазывают количество физических операций дискового ввода/вывода соответственно

Приведенный отчет отображает также другую полезную статистику, включая количество контрольных точек (столбец numckpts), число раз, когда поток должен был ожидать свободный буфер (столбец bufwaits), и активность опережающего чтения. Если сумма значений в столбцах ixda-RA, idx-RA и da-RA не равна приблизительно значению в столбце RA-pgsused. то следует уменьшить значения параметров опережающего чтения (они обсуждаются в разделе "Ввод/вывод опережающего чтения" этой главы).

Мониторинг типа сканирования
Мониторинг запросов
Сегменты запроса и операторы языка SQL
Статистика планов звпросов
Настройка Informix XPS

Добавить комментарий


Защитный код
Обновить