Администрирование · 12 мин
PostgreSQL для 1С: что это и как работает связка
PostgreSQL для 1С — что это за СУБД, чем отличается от файлового режима и MS SQL, как установить, настроить и обслуживать базу 1С на PostgreSQL.
PostgreSQL — это свободно распространяемая объектно-реляционная система управления базами данных (СУБД), которую платформа 1С:Предприятие поддерживает в качестве одного из вариантов хранения информационных баз в клиент-серверном режиме. Когда говорят «PostgreSQL для 1С», обычно имеют в виду связку: сервер 1С:Предприятия обращается к СУБД PostgreSQL, где физически лежат все данные — документы, справочники, регистры, настройки.
В отличие от файлового режима, где база хранится в одном файле 1Cv8.1CD на диске, клиент-серверный вариант с PostgreSQL рассчитан на одновременную работу десятков и сотен пользователей, большие объёмы данных и централизованное резервное копирование. При этом сама конфигурация 1С (Бухгалтерия, Управление торговлей, ЗУП и другие) не меняется — меняется только способ хранения данных.
Важный нюанс: 1С официально поддерживает не «ванильную» сборку PostgreSQL с сайта postgresql.org, а специальные сборки — от фирмы «1С» (1С:PostgreSQL) и от Postgres Professional (Postgres Pro, в том числе сертифицированная версия). Эти сборки содержат патчи, необходимые для корректной работы платформы 1С, в частности для поддержки нужного поведения при блокировках и совместимости типов данных.
Что такое PostgreSQL в контексте 1С и как устроена связка
Архитектура клиент-серверного режима 1С состоит из трёх уровней: клиентское приложение (тонкий, толстый или веб-клиент), кластер серверов 1С:Предприятия и сервер СУБД. PostgreSQL в этой схеме отвечает за физическое хранение таблиц, выполнение запросов и обеспечение транзакционной целостности. Сервер 1С формирует SQL-запросы, передаёт их в PostgreSQL и получает результаты.
Пользователь при этом не видит разницы: он открывает базу по имени в списке информационных баз, а платформа сама маршрутизирует соединение через сервер 1С к СУБД. Вся логика бизнес-процессов выполняется на сервере 1С, а PostgreSQL выступает надёжным хранилищем с механизмами журналирования транзакций (WAL) и контроля версий строк (MVCC).
Когда стоит переводить 1С на PostgreSQL
Переход с файлового режима на клиент-серверный оправдан при росте нагрузки. Типичные признаки: с базой одновременно работают больше 5–10 пользователей, размер файла 1Cv8.1CD превышает несколько гигабайт, регулярно возникают конфликты блокировок или ошибки «Файл базы данных повреждён», отчёты формируются минутами.
PostgreSQL выбирают в первую очередь из-за стоимости: сама СУБД бесплатна, а лицензии оплачиваются только на платформу 1С (сервер и клиентские лицензии). Для сравнения, MS SQL Server требует покупки лицензий на сервер СУБД и на каждое подключение, что при большом числе пользователей существенно увеличивает бюджет.
Сравнение вариантов СУБД для 1С
Бесплатная СУБД, работает на Linux и Windows. Подходит для большинства средних баз. Требует грамотной настройки и обслуживания, меньше готовых инструментов мониторинга.
Платная СУБД от Microsoft. Удобные средства администрирования, привычна многим администраторам Windows. Высокая стоимость лицензий при большом числе пользователей.
Без отдельной СУБД, база в одном файле. Подходит для 1–5 пользователей и небольших объёмов. Не масштабируется, уязвим при сбоях сети и питания.
Поддерживаются платформой, но на практике применяются редко — в крупных организациях с уже существующей инфраструктурой этих вендоров.
Какие сборки PostgreSQL подходят для 1С
Стандартный PostgreSQL с официального сайта не совместим с 1С «из коробки»: платформа при создании базы выдаст ошибку о несовместимости. Причина — 1С требует специфического поведения при работе с курсорами, блокировками и некоторыми типами данных, что реализовано только в адаптированных сборках.
Доступны два основных варианта. Первый — сборка от фирмы «1С», распространяемая через портал 1С:Обновление программ для зарегистрированных пользователей. Второй — Postgres Pro Standard и Postgres Pro Enterprise от компании Postgres Professional; сертифицированная версия Postgres Pro Certified востребована в организациях с требованиями к защите информации. Обе линейки выпускаются под Linux и Windows.
Как установить и подключить базу 1С к PostgreSQL
Общий порядок развёртывания одинаков независимо от операционной системы: сначала ставится СУБД, затем сервер 1С:Предприятия, после чего база создаётся через консоль кластера или конфигуратор. На практике удобнее ставить СУБД и сервер 1С на одну машину для небольших внедрений или разносить на разные серверы при высокой нагрузке.
После установки обязательно проверьте параметры подключения: сервер 1С обращается к PostgreSQL по TCP/IP (по умолчанию порт 5432), поэтому в pg_hba.conf должна быть разрешена аутентификация с адреса сервера 1С. Если обе службы на одной машине, достаточно локального доступа, но при разнесении серверов нужно явно открыть подключение и защитить канал, как минимум ограничив его межсетевым экраном.
Какие настройки PostgreSQL критичны для производительности 1С
Конфигурация PostgreSQL по умолчанию рассчитана на слабое оборудование и для 1С не подходит. Основные параметры, которые принято увеличивать в postgresql.conf: shared_buffers (обычно 25–30% оперативной памяти сервера), work_mem (влияет на сортировки и соединения в запросах), maintenance_work_mem (ускоряет обслуживание индексов), effective_cache_size (подсказка планировщику о доступном кэше), а также настройки WAL — wal_buffers и checkpoint-интервалы.
Точные значения зависят от объёма ОЗУ, числа одновременных пользователей и профиля нагрузки, поэтому универсальной «правильной» конфигурации не существует. Разумный подход — начать с рекомендованных в документации сборки значений, а затем наблюдать за метриками: долей попаданий в кэш, временем выполнения тяжёлых запросов, интенсивностью записи WAL.
-- Проверка доли попаданий в буферный кэш (нормально — выше ~98-99%)
SELECT round(100.0 * blks_hit / (blks_hit + blks_read), 2) AS cache_hit_ratio
FROM pg_stat_database WHERE datname = current_database();Отдельное внимание — локали базы данных. Базу 1С следует создавать с корректной локалью сортировки (для русского языка обычно ru_RU.UTF-8), иначе возможны ошибки сравнения строк и нарушение порядка в списках. Локаль задаётся при создании базы и впоследствии не меняется без пересоздания.
Как обслуживать базу: вакуум, бэкапы, мониторинг
Из-за механизма MVCC в PostgreSQL накапливаются устаревшие версии строк. За их очистку отвечает фоновый процесс autovacuum — он включён по умолчанию, но при интенсивной записи в базы 1С его стандартных настроек может не хватать, и таблицы начинают «разбухать». Признак проблемы: база растёт быстрее, чем прибавляется реальных данных, а запросы постепенно замедляются. В таких случаях autovacuum делают агрессивнее (снижают пороги срабатывания) и периодически выполняют полный VACUUM ANALYZE в окне обслуживания.
Резервное копирование делается средствами самой СУБД: логические выгрузки через pg_dump для небольших баз или физические копии через pg_basebackup с архивированием WAL для крупных. Важно: копирование файлов каталога данных «вживую» без специальных средств не является корректным бэкапом. Выгрузка в .dt из конфигуратора — дополнительный, но не заменяющий СУБД-уровень способ, причём на больших базах она выполняется долго.
Как проверить здоровье базы
Размер растёт пропорционально вводимым данным
База растёт заметно быстрее данных — вероятно, autovacuum не справляется
Проведение документов и отчёты работают стабильно изо дня в день
Постепенная деградация скорости без роста нагрузки
Бэкап создаётся по расписанию и периодически проверяется восстановлением
Копии есть, но восстановление ни разу не проверялось
Единичные предупреждения, нет повторяющихся ошибок
Регулярные ошибки checkpoint, deadlock или переполнения
Типичные ошибки и ограничения связки 1С + PostgreSQL
Самая частая ошибка — установка несовместимой сборки СУБД, о чём уже говорилось выше. Вторая по распространённости — оставить конфигурацию PostgreSQL по умолчанию: база работает, но медленно, и виноватой кажется сама 1С. Третья типичная проблема — отсутствие обслуживания: без мониторинга autovacuum и регулярных бэкапов база деградирует, а в критический момент выясняется, что восстановить нечего.
Из ограничений стоит помнить: 1С не использует возможности PostgreSQL напрямую (хранимые процедуры, представления пишутся только через механизмы платформы), прямое изменение данных в таблицах SQL-запросами запрещено — оно нарушает целостность структуры, которую контролирует платформа. Читать данные напрямую для интеграций можно, но с пониманием того, что структура таблиц недокументирована и меняется при обновлениях конфигурации.
Частые вопросы о PostgreSQL и 1С
Можно ли использовать бесплатный PostgreSQL с официального сайта для 1С?
Нет. Платформа 1С:Предприятие требует адаптированные сборки: 1С:PostgreSQL с портала 1С или Postgres Pro. Они тоже бесплатны в базовых редакциях, но содержат патчи совместимости, без которых платформа откажется работать с базой.
Сколько пользователей выдержит 1С на PostgreSQL?
Точного предела нет — он зависит от конфигурации, объёма данных, железа и настроек СУБД. На практике связка успешно обслуживает и десятки, и сотни одновременных пользователей при достаточных ресурсах сервера и грамотной настройке. Узким местом чаще становится дисковая подсистема, а не сама СУБД.
Что быстрее для 1С: PostgreSQL или MS SQL Server?
Однозначного ответа нет: результаты зависят от версии платформы, конфигурации и качества настройки каждой СУБД. MS SQL часто прощает неоптимальную настройку благодаря своим механизмам, PostgreSQL при грамотном тюнинге показывает сопоставимые результаты. Выбор обычно определяется бюджетом и компетенциями администраторов.
Можно ли перенести базу с файлового режима на PostgreSQL без потери данных?
Да. Стандартный путь: выгрузить базу в файл .dt через конфигуратор (Администрирование → Выгрузить информационную базу), создать пустую базу на сервере PostgreSQL и загрузить в неё этот файл. Перед операцией сделайте копию исходной базы и убедитесь, что версии платформы совместимы.
Нужно ли отдельно лицензировать PostgreSQL для коммерческого использования?
СУБД PostgreSQL распространяется по свободной лицензии, допускающей коммерческое использование без отчислений. Оплачиваются лицензии 1С (на сервер 1С:Предприятия и клиентские доступы), а при выборе коммерческих редакций Postgres Pro — поддержка вендора по договору.
Как понять, что базе нужен переход с файлового режима на клиент-серверный?
Сигналы: больше 5–10 одновременных пользователей, файл базы вырос до нескольких гигабайт, частые конфликты блокировок, медленные отчёты, ошибки при одновременной записи. Если база маленькая и пользователей двое-трое, переход не даст выигрыша, а добавит затрат на администрирование.
Что важно запомнить
PostgreSQL для 1С — это бесплатная СУБД для клиент-серверного режима, требующая специальной сборки (1С:PostgreSQL или Postgres Pro), осмысленной настройки памяти и WAL, контроля autovacuum и регулярных проверяемых бэкапов. Прямое изменение данных в таблицах запрещено, а переход с файлового режима выполняется через выгрузку и загрузку .dt.