В чем разница между сборками PostgreSQL от 1С и Postgres Professional и какую версию выбрать для сервера?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При выборе системы управления базами данных (СУБД) для платформы «1С:Предприятие» системные администраторы часто сталкиваются с дилеммой: использовать ли дистрибутивы, предлагаемые непосредственно фирмой «1С» на портале ИТС, или отдать предпочтение специализированным сборкам от компании Postgres Professional. Разберем подробно технические нюансы, состав патчей и особенности настройки этих версий.

Основные отличия дистрибутивов: 1С против Postgres Professional

Рассмотрим, в чем заключается концептуальная разница между этими двумя источниками программного обеспечения. Дистрибутивы, размещенные на сайте 1С, являются «консервативными». Фирма 1С берет определенную версию PostgreSQL, накладывает на нее необходимые патчи для обеспечения совместимости с платформой и проводит длительное тестирование, в том числе на своих высоконагруженных облачных сервисах (1С:Fresh). Эти сборки считаются эталонными с точки зрения стабильности для типовых задач.

Сборки от Postgres Professional (с пометкой «1С» в названии) обладают рядом преимуществ:

  1. Оперативность обновлений: Исправления безопасности и минорные обновления ядра PostgreSQL появляются в репозиториях PostgresPro значительно быстрее, чем на портале ИТС.
  2. Удобство установки: Наличие полноценных репозиториев для Linux-дистрибутивов позволяет автоматизировать процесс обновления через стандартные менеджеры пакетов (apt, yum), в то время как версии от 1С часто приходится скачивать и устанавливать вручную.
  3. Дополнительный инструментарий: Инсталляторы от PostgresPro часто включают в себя скрипты автоматической настройки (tuning) под аппаратные ресурсы сервера.

Проанализируем техническую сторону вопроса: обе сборки содержат идентичный набор критически важных патчей, без которых работа 1С с PostgreSQL невозможна. Следовательно, переход с версии 1С на аналогичную версию Postgres Professional (например, с 14.5-3.1C на 14.9-1C) не требует изменения структуры данных и проходит бесшовно.

Технические подробности патчей: почему нельзя использовать «ванильный» PostgreSQL

Многие задаются вопросом, можно ли использовать оригинальную (ванильную) версию СУБД. Ответ — нет, так как платформа 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 и 16 для систем 1С

Разберем, стоит ли переходить на более современные версии 15.x и 16.x. Проанализируем ключевые изменения в этих релизах:

  1. Статистика в памяти (PG 15+): В 15-й версии механизм сбора статистики был перенесен из временных файлов в общую память (shared memory). Это существенно снижает нагрузку на дисковую подсистему (I/O) и ускоряет работу планировщика, что особенно заметно в базах с большим количеством одновременно работающих пользователей.
  2. Улучшение сортировки: Версия 15 получила оптимизированные алгоритмы сортировки данных. Поскольку 1С часто выполняет сортировку больших выборок в памяти, это дает прирост производительности «из коробки» без изменения кода конфигурации.
  3. Поддержка в платформе: Важно помнить, что официальная поддержка PostgreSQL 16 появилась только в последних релизах платформы (начиная с 8.3.23.1912 и 8.3.24.1350). Использование PG 16 на старых версиях 8.3.22 и ниже может привести к ошибкам из-за изменений в системных каталогах СУБД.

Практическая настройка параметров postgresql.conf

Рассмотрим пример настройки конфигурационного файла для сервера с 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 или Linux?

Проанализируем ситуацию с выбором ОС. Хотя сборки для Windows существуют и активно развиваются, важно понимать следующее:

  1. Архитектура процессов: PostgreSQL на Linux использует модель ветвления процессов (fork), которая исторически более стабильна и производительна под высокой нагрузкой. На Windows используется эмуляция через потоки (threads), что накладывает определенные ограничения на масштабируемость.
  2. Поддержка разработчиками: Команда Postgres Professional прямо заявляет, что их основной приоритет — Linux. Версии под Windows выпускаются «как есть» и могут получать исправления специфических «виндовых» ошибок с задержкой.
  3. Эффективность кэширования: Linux более агрессивно и эффективно использует свободную оперативную память под дисковый кэш, что напрямую влияет на скорость работы базы данных 1С.

Если в вашей организации более 50 пользователей, настоятельно рекомендуем рассмотреть переход на Linux (например, Debian или Astra Linux). Для небольших внедрений или задач разработки Windows-версия вполне жизнеспособна.

Рекомендации по резервному копированию

При использовании PostgreSQL для 1С забудьте про pg_dump для регулярных бэкапов больших баз. Этот инструмент создает логическую копию всей базы, что при размере данных свыше 100 ГБ занимает слишком много времени и создает огромную нагрузку на диск. Посмотрим на альтернативы:

Для сборок Postgres Pro рекомендуется использовать утилиту pg_probackup. Она позволяет:

Это позволяет делать полные копии раз в неделю, а инкрементальные — несколько раз в день, что минимизирует потерю данных при аварии.

Итоги: что же ставить?

Подведем итог нашему анализу:

← На главную