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

Поддержка 1С

Описание

Функциональность позволяет использовать СУБД Pangolin в качестве СУБД для «Платформы 1С: Предприятие» версии 8.2 и 8.3.

Включение поддержки 1C активирует:

  • оптимизации планировщика запросов;
  • изменения в работе внутренних алгоритмов СУБД;
  • дополнительные расширения.

Настройка

Варианты включения поддержки:

  • при автоматизированной установке СУБД Pangolin;
  • на уже развернутом экземпляре СУБД Pangolin.

Включение поддержки 1C при автоматизированной установке СУБД Pangolin

Для включения функциональности, на этапе автоматизированного развертывания СУБД, задайте значение параметра tuner_profile равное 1c в config.yml.

Конфигурации, разработанные на базе Платформы 1С, могут взаимодействовать с базой данных СУБД Pangolin только при значении параметра tuner_profile равному 1c. В этом режиме система автоматически устанавливает параметры СУБД, необходимые для корректной работы с 1С:

Параметр

Значение

pg_stat_track_io_timing

off (только если не задан в конфигурации pg_stat_track_io_timing)

optimize_for_1c

on

autovacuum

on

synchronous_commit

off

max_locks_per_transaction

256

row_security

false

temp_buffers

256MB

bgwriter_delay

20ms

bgwriter_lru_multiplier

4.0

bgwriter_lru_maxpages

400

autovacuum_max_workers

<количество ядер деленное на 2, но не менее 4>

autovacuum_naptime

20s

from_collapse_limit

8

join_collapse_limit

8

geqo

on

geqo_threshold

12

standard_conforming_strings

off

escape_string_warning

off

plantuner.fix_empty_table

on

online_analyze.enable

off

online_analyze.table_type

temporary

online_analyze.verbose

off

online_analyze.threshol

50

online_analyze.scale_factor

0.1

online_analyze.local_tracking

on

online_analyze.min_interval

10000

Внимание!

Работа баз данных, созданных с включенным параметром optimize_for_1c, на версиях продукта до 5.3.2 не поддерживается.

Повышение производительности для использования совместно с 1С

Сведения

Функциональность доступна только для редакций Enterprise и Enterprise для ERP-систем.

При включенной поддержке 1С и параметре optimize_for_1c = on в СУБД активируются дополнительные механизмы оптимизации работы с временными таблицами, характерные для нагрузки Платформы 1С.

Оптимизация работы с 1С

Сведения

Функциональность доступна только для редакций Enterprise и Enterprise для ERP-систем.

При включенном параметре optimize_for_1c = on в СУБД активируются дополнительные механизмы оптимизации, улучшающие производительность типичных сценариев работы Платформы 1С.

Оптимизация работы с временными таблицами

Оптимизации, направленные на снижение нагрузки на файловую систему и системные каталоги при работе с краткоживущими временными объектами:

SIMD-оптимизации

Механизмы ускорения внутренних операций СУБД за счет использования SIMD-инструкций процессора:

Дополнительные оптимизации планировщика

Оптимизации, повышающие качество планирования и сокращающие объем обрабатываемых данных:

Включаемые расширения при поддержке 1С

При установке СУБД Pangolin с поддержкой 1С расширения автоматически активируются в базе данных (по умолчанию они установлены, но не активны).

Описание включаемых расширений:

Расширение

Описание

fasttrun

добавляет функцию fasttruncate для быстрой очистки временных таблиц без транзакционной безопасности

fulleq

добавляет оператор == для сравнения, который возвращает true при равенстве значений или если оба NULL

mchar

добавляет операторы для работы с типом данных MCHAR (аналог в MS SQL Server)

online_analyze

проводит анализ данных после INSERT/UPDATE/DELETE/SELECT INTO

plantuner

расширение для управления планами запросов

Включение поддержки 1С на развернутом экземпляре СУБД Pangolin

Для включения поддержки 1C на работающей базе выполните:

ALTER SYSTEM SET optimize_for_1c = 'on';
SELECT pg_reload_conf();

Чтобы изменить настройку только в текущей сессии (для всех операций в этой сессии, независимо от пользователя) выполните:

SET optimize_for_1c = 'on';

Для установки расширений выполните команды:

CREATE EXTENSION "fasttrun" WITH SCHEMA "public";
CREATE EXTENSION "fulleq" WITH SCHEMA "public";
CREATE EXTENSION "mchar" WITH SCHEMA "public";

Отключение поддержки 1C

Для отключения функциональности выполните команды:

ALTER SYSTEM SET optimize_for_1c = 'off';
SELECT pg_reload_conf();

Отключение оптимизаций и изменений поведения алгоритмов контролируется параметрами конфигурации:

Параметр

Описание

Значения

optimize_for_1c

Контролирует включение всех оптимизаций и изменений поведения алгоритмов, описанных выше

  • on – включает оптимизации и новое поведение. Рекомендуется при совместной работе с 1С;
  • off (значение по умолчанию) – отключает оптимизации и новое поведение. Рекомендуется во всех остальных случаях

enable_self_join_removal

Контролирует оптимизацию JOIN самих на себя по уникальным столбцам. Не влияет на работу при выключенном параметре optimize_for_1c

  • off (значение по умолчанию) – отключает оптимизацию;
  • on – включает оптимизацию, но может вызывать некоторые проблемы при выполнении запросов

enable_temp_table_inval_messages

Управляет механизмом синхронизации метаданных временных таблиц между параллельными сеансами. Не влияет на работу при выключенном параметре optimize_for_1c

  • off (значение по умолчанию) – оптимизирует производительность, минимизируя накладные расходы на межпроцессное взаимодействие для максимальной скорости выполнения операций с временными таблицами. Этот режим является оптимальным для стандартных сценариев использования DDL;
  • on – активирует механизм гарантированной согласованности метаданных, обеспечивая их мгновенную видимость для всех сеансов. Может быть целесообразно в высококонкурентных сценариях использования DDL

Управление

Выдача прав на создание базы данных 1С не суперпользователям

Для создания базы данных 1C без прав суперпользователя необходимо:

  1. Включить пользователю опцию CREATEDB, которая позволит пользователю создать новую пустую базу данных в СУБД.

  2. Выдать пользователю права на системную роль pg_create_plpgsql_language, которая позволяет выполнять без прав суперпользователя команды инициализации поддержки языка PL/pgSQL:

    GRANT pg_create_plpgsql_language TO <username>;

    CREATE OR REPLACE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '$libdir/plpgsql' LANGUAGE C;

    CREATE PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler;