Skip to content

About

Planhint-1c для 14-й версии PostgreSQL

Resources

Stars

4 stars

Watchers

2 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
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 до конца транзакции
      

About

Planhint-1c для 14-й версии PostgreSQL

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages