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;