При выборе системы управления базами данных (СУБД) для платформы «1С:Предприятие» системные администраторы часто сталкиваются с дилеммой: использовать ли дистрибутивы, предлагаемые непосредственно фирмой «1С» на портале ИТС, или отдать предпочтение специализированным сборкам от компании Postgres Professional. Разберем подробно технические нюансы, состав патчей и особенности настройки этих версий.
Рассмотрим, в чем заключается концептуальная разница между этими двумя источниками программного обеспечения. Дистрибутивы, размещенные на сайте 1С, являются «консервативными». Фирма 1С берет определенную версию PostgreSQL, накладывает на нее необходимые патчи для обеспечения совместимости с платформой и проводит длительное тестирование, в том числе на своих высоконагруженных облачных сервисах (1С:Fresh). Эти сборки считаются эталонными с точки зрения стабильности для типовых задач.
Сборки от Postgres Professional (с пометкой «1С» в названии) обладают рядом преимуществ:
Проанализируем техническую сторону вопроса: обе сборки содержат идентичный набор критически важных патчей, без которых работа 1С с PostgreSQL невозможна. Следовательно, переход с версии 1С на аналогичную версию Postgres Professional (например, с 14.5-3.1C на 14.9-1C) не требует изменения структуры данных и проходит бесшовно.
Многие задаются вопросом, можно ли использовать оригинальную (ванильную) версию СУБД. Ответ — нет, так как платформа 1С исторически проектировалась с оглядкой на механизмы MS SQL Server. Чтобы «научить» PostgreSQL работать так же, применяются следующие патчи и расширения:
Модули mchar и mvarchar: В 1С активно используется тип данных с фиксированной длиной строки. В стандартном PostgreSQL сравнение строк с пробелами в конце происходит иначе, чем в Windows-ориентированных системах. Патч mchar добавляет типы данных и операторы, которые корректно обрабатывают такие строки, исключая ошибки в логике запросов платформы.
Расширение fasttrun: Платформа 1С очень интенсивно использует временные таблицы, постоянно создавая и удаляя их (команда TRUNCATE). В штатном режиме PostgreSQL операция TRUNCATE является «тяжелой» для файловой системы. Патч оптимизирует этот процесс, делая очистку таблиц практически мгновенной, что критично для производительности сложных отчетов.
Расширение online_analyze: Это, пожалуй, самый важный компонент для 1С. В типовых сценариях 1С сначала записывает данные во временную таблицу, а в следующем же запросе использует ее для соединения с другими таблицами. Стандартный планировщик PostgreSQL не успевает собрать статистику по свежесозданной временной таблице и строит неоптимальный план выполнения запроса. online_analyze принудительно запускает сбор статистики сразу после завершения операции INSERT или COPY, благодаря чему тяжелые запросы не «зависают».
Разберем, стоит ли переходить на более современные версии 15.x и 16.x. Проанализируем ключевые изменения в этих релизах:
Рассмотрим пример настройки конфигурационного файла для сервера с 16 ГБ оперативной памяти. Сравним стандартные настройки и настройки, оптимизированные под 1С, которые предлагает инсталлятор Postgres Professional. Проанализируем, какие параметры наиболее важны.
Основные параметры памяти и соединений:
max_connections = 500
shared_buffers = 4GB # Обычно рекомендуется 25% от всей RAM
temp_buffers = 32MB
work_mem = 128MB # Память для сортировки в каждом соединении
maintenance_work_mem = 512MB
Настройки для ускорения записи и работы с диском:
synchronous_commit = off # Существенно ускоряет запись, но есть риск потери последних транзакций при сбое питания
random_page_cost = 1.1 # Для SSD/NVMe дисков. Для HDD ставьте 3.0-4.0
effective_cache_size = 12GB # Примерно 75% от общего объема RAM
Специфические настройки для модулей 1С:
shared_preload_libraries = 'online_analyze, plantuner'
escape_string_warning = off
standard_conforming_strings = off
online_analyze.table_type = 'temporary'
online_analyze.enable = on
plantuner.fix_empty_table = 'on'
Выясним причину важности параметра standard_conforming_strings = off. Платформа 1С при формировании SQL-запросов использует обратную косую черту \ как обычный символ, а не как спецсимвол экранирования. Если этот параметр оставить включенным (on), PostgreSQL будет некорректно интерпретировать строки, что приведет к ошибкам выполнения запросов.
Проанализируем ситуацию с выбором ОС. Хотя сборки для Windows существуют и активно развиваются, важно понимать следующее:
Если в вашей организации более 50 пользователей, настоятельно рекомендуем рассмотреть переход на Linux (например, Debian или Astra Linux). Для небольших внедрений или задач разработки Windows-версия вполне жизнеспособна.
При использовании PostgreSQL для 1С забудьте про pg_dump для регулярных бэкапов больших баз. Этот инструмент создает логическую копию всей базы, что при размере данных свыше 100 ГБ занимает слишком много времени и создает огромную нагрузку на диск. Посмотрим на альтернативы:
Для сборок Postgres Pro рекомендуется использовать утилиту pg_probackup. Она позволяет:
Это позволяет делать полные копии раз в неделю, а инкрементальные — несколько раз в день, что минимизирует потерю данных при аварии.
Подведем итог нашему анализу: