Перейти к основному содержимому

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:

  1. Загрузите расширение:

    LOAD 'plantuner';
  2. Создайте временную таблицу и два индекса:

    CREATE TABLE t(i INT);
    CREATE INDEX t_idx1 ON t(i);
    CREATE INDEX t_idx2 ON t(i);
  3. Убедитесь, что планировщик запроса выбрал второй индекс:

    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)
  4. Отключите использование второго индекса через расширение и посмотрите результат планирования запроса:

    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)
  5. Удалите временную таблицу:

    DROP TABLE t;