Управление планами запросов
Описание
Каждый пользователь, подключенный к СУБД Pangolin, взаимодействует с сервером с помощью SQL-предложений: SELECT, INSERT, UPDATE, DELETE и других. Получение данных из СУБД возможно также с использованием подготовленных предложений (PREPARE), а в программном коде на процедурных языках — через курсоры и встроенные SQL-вставки.
При настройке производительности под оптимизируемым запросом понимают ту часть любого из этих предложений, которая выполняет выборку данных из СУБД. Один и тот же запрос может быть реализован разными физическими способами при одинаковом логическом результате. Например, доступ к таблице можно получить напрямую или с помощью индекса, а соединение трех и более таблиц — выполнить в различном порядке. Различные физические способы доступа к данным, методы формирования результата, а также порядок и метод выполнения соединений называются «путями». Любое их сочетание, соответствующее логике исходного запроса, называется «планом запроса».
Для возможности ручной оптимизации планов запросов в Pangolin используются расширения pg_outline, pg_hint_plan и pg_store_plans.
Расширения pg_store_plans, pg_outline и pg_hint_plan входят в состав СУБД Pangolin. Эти расширения, в совокупности, предоставляют возможность фиксации и подмены планов запросов для оптимизации работы планировщика запросов.
Настройка
Расширение pg_hint_plan
Расширение pg_hint_plan управляет планом выполнения с помощью фраз-подсказок (hint), записываемых в виде простых описаний в SQL-комментариях особого вида.
Функциональные возможности:
-
подсказки (hint) планировщику запросов для управления планами выполнения запросов, в части:
- методов сканирования таблиц;
- методов соединения таблиц;
- порядка соединения;
- корректировки числа строк результата соединения;
- настройки параллельности обработки таблиц;
- установки значений параметров конфигурации на время планирования запроса;
-
управление планами подготовленных запросов (prepared statements) через заданные в тексте этих запросов подсказок (hint);
-
управление планами запросов в составе PL/pgSQL-блока через подсказки (hint), заданные в тексте запросов в PL/pgSQL-блоках;
-
дополнение запросов подсказками «на лету» на этапе планирования запроса на уровне всей СУБД в составе СУБД Pangolin. Это позволяет выполнять:
-
компенсационную корректировку запросов на основе заполняемой таблицы подсказок, которая устанавливает соответствие текста дополняемого запроса и имени приложения (опционально);
-
компенсационную корректировку для:
- запросов с динамическими параметрами (подсказкой подстановщиков, вместо конкретных значений);
- подготовленных запросов;
-
-
управление (через настроечные параметры) на уровне сессии пользователя или всей СУБД в составе СУБД Pangolin:
- активностью расширения;
- использованием функциональности дополнения подсказками через таблицу подсказок;
- уровнем логирования, с которым в лог будут писаться сообщения об ошибках разбора подсказок;
- детализацией записей отладочной информации расширения;
- уровнем логирования, с которым в лог будут писаться сообщения с отладочной информацией.
С настройкой расширения и его объектами можно ознакомиться в одноименном разделе расширения pg_hint_plan документа «Описание расширений продукта СУБД Pangolin».
Использование подсказок
Использование подсказок описано в документе «Описание расширений продукта СУБД Pangolin», раздел «pg_hint_plab», подраздел «Использование подсказок».
Расширение pg_outline
Расширение pg_outline предназначено для изменения плана выполнения запросов.
Функциональные возможности:
- управление (добавить, заменить, удалить, включить, выключить) правилами подмены (фиксациями подсказок
pg_hint_plan) планов запросов; - возврат информации о созданных правилах подмены планов запросов;
- возврат идентификатора запроса (
queryId) для текста запроса (queryText).
С настройкой расширения и его объектами можно ознакомиться в одноименном разделе расширения pg_outline документа «Описание расширений продукта СУБД Pangolin».
Расширение pg_store_plans
Расширение pg_store_plans предназначено для накапливания статистики по планам выполнения всех SQL-запросов, выполняемых в БД.
С настройкой расширения и его объектами можно ознакомиться в одноименном разделе расширения pg_store_plans документа «Описание расширений продукта СУБД Pangolin».