Перейти к основному содержимому

Управление планами запросов

Описание

Каждый пользователь, подключенный к СУБД 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».