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;