Repository navigation
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
planhint1c - установка из текста запроса параметров планировщика
contrib/planhint1c модуль для PostgreSQL 14, который
находит в строке запроса параметры планировщика и устанавливает их.
Motivation
planhint1c позволяет управлять параметрами планировщика из запросов 1С.
Installation
* make && make install && make installcheck
Syntax
planhint1c.enabled
Параметр конфигурации postgresql, который включает/выключает разбор подсказок
из текста запросов и установку параметров. По умолчанию включен.
Usage
Для работы модуля надо загрузить библиотеку 'planhint1c' в psql сессию
через команду LOAD 'planhint1c' или указать planhint1c в параметре 'shared_preload_libraries'
файла конфигурации postgresql.conf.
При подключении модуля перед работой планировщика плана выполнения запроса
анализируется текст запросов вида INSERT или SELECT на наличие
магического префикса '&gH2^7l_' для опций планировщика.
За магическим префиксом идёт один символ области действия устанавливаемых настроек
'q' - только для запроса,
't' - до конца текущей транзакции,
's' - для текущей сессии.
Заканчивается строка установки шестнадцатиричным числом - маской устанавливаемых параметров.
Шестнадцатиричные цифры задаются в верхнем регистре A-F.
В маске используется по 2 бита на один параметр. Бит 2 задаёт будет ли модифицироваться параметр.
Если 2 установлен - параметр будет модифицироваться. Если сброшен, то нет. Бит 1 задаёт
значение устанавливаемого параметра on или off.
Сейчас в модуле реализовано управление параметрами enable_nestloop в младших двух битах (маска 0x3) и
enable_mergejoin в следущей паре бит (маска 0xC).
Примеры магической строки в тексте запроса:
'&gH2^7l_q2' - отключает enable_nestloop=off для текущего запроса
'&gH2^7l_sA' - отключает enable_nestloop=off и enable_mergejoin=off в текущей сессии
'&gH2^7l_tF' - включает enable_nestloop=on и enable_mergejoin=on до конца транзакции