pg_hint_plan. Управление планами запросов в Pangolin
Версия: 1.5.0.
В исходном дистрибутиве установлено по умолчанию: да.
Связанные компоненты: отсутствуют.
Схема размещения:
hint_plan
.
Расширение pg_hint_plan
управляет планом выполнения с помощью подсказывающих фраз (подсказок, hint
), записываемых в виде простых описаний в SQL-комментариях особого вида.
Объекты
Настроечные параметры pg_hint_plan
Для Pangolin расширение pg_hint_plan
модифицировано: запросы создания, изменения и удаления ролей не обрабатываются расширением pg_hint_plan
и не попадают в лог даже при включенном детальном логировании расширения.
Наименование | Описание | Значение по умолчанию | Рекомендуемое значение |
---|---|---|---|
pg_hint_plan.enable_hint | Включает/выключает pg_hint_plan | on | on |
pg_hint_plan.enable_hint_table | Разрешает/запрещает использование подсказок (hint) для запросов из таблицы подсказок | on | |
pg_hint_plan.parse_messages | Определяет уровень логирования, с которым в журнал будут попадать сообщения об ошибках разбора подсказок. Допустимые значения*: error , warning , notice , info , log , debug | info | warning |
pg_hint_plan.debug_print | Указывает детализацию отладочных сообщений. Допустимые значения**: off , on , detailed , verbose | off | |
pg_hint_plan.message_level | Определяет уровень логирования для отладочных сообщений. Допустимые значения*: error , warning , notice , info , log , debug | info |
* — Уровни важности сообщений ошибок синтаксического анализа и отладочных сообщений. Описание допустимых значений:
ERROR
— сообщает об ошибке, из-за которой прервана текущая команда;WARNING
— предупреждения о возможных проблемах;NOTICE
— информация, которая может быть полезной пользователям;INFO
— неявно запрошенная пользователем информация;LOG
— информация, полезная для администраторов;DEBUG
— максимальный уровень детализации для разработчиков.
** – Детализация отладочных сообщений — количество информации, записываемой в журнал сервера для каждого сообщения. Каждое последующее значение добавляет больше полей в выводимое сообщение. Описание допустимых значений:
off
— 0 (сообщения выключены);on
— 1;detailed
— 2;verbose
— 3.
Список подсказок (hints
)
Подсказки подразделяются на шесть групп по видам объектов, на которые они могут воздействовать, и видам воздействия. Список доступных подсказок перечислен ниже:
Группа | Формат | Описание |
---|---|---|
Метод сканирования | SeqScan(таблица) | Принудительное последовательное сканирован ие таблицы |
TidScan(таблица) | Принудительное сканирование таблицы по TID | |
IndexScan(таблица[ индекс...]) | Принудительное сканирование таблицы по индексу. Сканирование ограничивается заданными индексами | |
IndexOnlyScan(таблица[ индекс...]) | Принудительное сканирование таблицы по индексу. Сканирование ограничивается заданными индексами. Если сканирование только по индексу невозможно, может использоваться обычное сканирование по индексу | |
BitmapScan(таблица[ индекс...]) | Принудительное сканирование таблицы по битовой карте. Сканирование ограничивается заданными индексами | |
IndexScanRegexp(таблица[ регулярное выражение POSIX...]) | Принудительно выбирает сканирование таблицы по индексу. Сканирование ограничивается индексами с именами, соответствующими указанному регулярному выражению POSIX | |
IndexOnlyScanRegexp(table[ регулярное выражение POSIX...]) | Принудительно выбирает сканирование таблицы только по индексу. Сканирование ограничивается индексами с именами, соответствующими указанному регулярному выраже нию POSIX | |
BitmapScanRegexp(table[ регулярное выражение POSIX...]) | Принудительно выбирает сканирование таблицы по по битовой карте. Сканирование ограничивается индексами с именами, соответствующими указанному регулярному выражению POSIX | |
NoSeqScan(таблица) | Принудительное отключение выбора последовательного сканирования таблицы | |
NoTidScan(таблица) | Принудительное отключение выбора сканирования таблицы по TID | |
NoIndexScan(таблица) | Принудительное отключение выбора сканирования таблицы по индексу и сканирования только по индексу для заданной таблицы | |
NoIndexOnlyScan(таблица) | Принудительное отключение выбора сканирования только по индексу для заданной таблицы | |
NoBitmapScan(таблица) | Принудительное отключение выбора сканирования по битовой карте для таблицы | |
Метод соединения | NestLoop(таблица таблица[ таблица...]) | Принудительный выбор вложенного цикла для соединений с заданными таблицами |
HashJoin(таблица таблица[ таблица...]) | Принудительный выбор соединения по хешу для соединений с заданными таблицами | |
MergeJoin(таблица таблица[ таблица...]) | Принудительный выбор соединения слиянием для соединений с заданными таблицами | |
NoNestLoop(таблица таблица[ таблица...]) | Принудительное отключение выбора вложенного цикла для соединений с заданными таблицами | |
NoHashJoin(таблица таблица[ таблица...]) | Принудительное отключение выбора соединения по хешу для соединений с заданными таблицами | |
NoMergeJoin(таблица таблица[ таблица...]) | Принудительное отключение выбора соединения слиянием для соединений с заданными таблицами | |
Порядок соединения | Leading(таблица таблица[ таблица...]) | Принудительный выбор заданного порядка соединения |
Leading(<соединяемая пара>) | Принудительный выбор заданного порядка и направления соединения. Соединяемая пара — это пара таблиц и/или других соединяемых пар, заключенная в скобки, что позволяет образовывать вложенные структуры | |
Корректировка числа строк | Rows(таблица таблица[ таблица...] корректировка) |