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

Поддержка 1С

Описание

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

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

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

Настройка

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

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

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

Для включения функциональности задайте параметр enable_1c_support в custom_config_initial.yml.

примечание

Подробная информация о custom_config_initial.yml приведена в разделе «Сценарий установки при помощи запуска Ansible плейбука» руководства по установке.

Конфигурации, разработанные на базе Платформы 1С, могут взаимодействовать с базой данных СУБД Pangolin только при включенном параметре enable_1C_support = true. В этом режиме система автоматически устанавливает параметры СУБД, необходимые для корректной работы с 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

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

Расширение
Описание
fasttrun
добавляет функцию fasttruncate для быстрой очистки временных таблиц без транзакционной безопасности
fulleq
добавляет оператор == для сравнения, который возвращает true при равенстве значений или если оба NULL
mchar
добавляет операторы для работы с типом данных MCHAR (аналог в MS SQL Server)
online_analyze
проводит анализ данных после INSERT/UPDATE/DELETE/SELECT INTO
plantuner
расширение для управления планами запросов

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

Внимание!

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

Включение поддержки 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 – включает оптимизацию, но может вызывать некоторые проблемы при выполнении запросов

Управление

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

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

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

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

    GRANT pg_create_plpgsql_language TO <имя_пользователя>;

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

    CREATE PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler;