plantuner. Поддержк а 1С:Предприятие. Поддержка указаний для планировщика
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext
.
Модуль plantuner
добавляет поддержку указаний для планировщика, позволяющих отключать или подключать определенные индексы при выполнении запроса. Упрощенное расширение по управлению планами запросов. Этот модуль требуется для поддержки системы 1С:Предприятие.
Переменные GUC
Переменные предоставляемые расширением:
plantuner.disable_index
— список индексов, которые не будет видеть планировщик.plantuner.enable_index
— список индексов, которые будет видеть планировщик, даже если они скрыты параметромplantuner.disable_index
.
Доработка
Доработка не проводилась.
Ограничения
Ограничения отсутствуют.
Установка
Установка расширения plantuner
осуществляется во всех случаях, однако автоматическое включение и активация происходят только при выборе установки с поддержкой 1С, а также установки ролевой модели. Для установки данного расширения на уже развернутом экземпляре СУБД Pangolin необходимо загрузить расширение:
Чтобы включить этот модуль, необходимо:
-
загрузить разделяемую библиотеку командой:
LOAD 'plantuner';
-
либо указать ее в параметре
shared_preload_libraries
вpostgresql.conf
:shared_preload_libraries = 'plantuner';
Настройка
Настройка не требуется.
Использование модуля
Пример использования модуля plantuner
:
-
Загрузите расширение:
LOAD 'plantuner';
-
Создайте временную таблицу и два индекса:
CREATE TABLE t(i INT);
CREATE INDEX t_idx1 ON t(i);
CREATE INDEX t_idx2 ON t(i); -
Убедитесь, что планировщик запроса выбрал второй индекс:
EXPLAIN SELECT i FROM t WHERE i=1;
Пример вывода:
QUERY PLAN
----------------------------------------------------------------------
Bitmap Heap Scan on t (cost=4.26..14.95 rows=13 width=4)
Recheck Cond: (i = 1)
-> Bitmap Index Scan on t_idx2 (cost=0.00..4.25 rows=13 width=0)
Index Cond: (i = 1) -
Отключите использование второго индекса через расширение и посмотрите результат планирования запроса:
SET plantuner.disable_index='t_idx2';
EXPLAIN SELECT i FROM t WHERE i=1;Ожидаемый результат, что ошибок не возникло. В плане запроса должен использоваться первый индекс
t_idx1
.Пример вывода:
QUERY PLAN
----------------------------------------------------------------------
Bitmap Heap Scan on t (cost=4.26..14.95 rows=13 width=4)
Recheck Cond: (i = 1)
-> Bitmap Index Scan on t_idx1 (cost=0.00..4.25 rows=13 width=0)
Index Cond: (i = 1) -
Удалите временную таблицу:
DROP TABLE t;