Переход с файлового режима работы 1С на клиент-серверный — это важный этап масштабирования системы, особенно когда размер базы превышает 10 Гб, а количество пользователей растет. В данной статье мы подробно разберем процесс миграции на PostgreSQL, проанализируем разницу между доступными версиями СУБД и выясним, как избежать типичных проблем с производительностью.
Рассмотрим исходные данные: база 1С:Бухгалтерия 3.0 объемом 11 Гб и 5 активных пользователей. При таких параметрах файловый режим начинает терять стабильность, а риск повреждения данных при сбоях сети возрастает. Для перехода на SQL-версию нам потребуется серверная лицензия 1С.
Разберем, какой вариант лицензирования будет оптимальным:
Важный момент по клиентским лицензиям: если у вас уже есть 5 программных или аппаратных лицензий для файловой версии, заново покупать их не нужно. Они подходят и для клиент-серверного варианта, если количество рабочих мест не увеличивается.
Проанализируем основные варианты СУБД, доступные для работы с 1С:
1. Бесплатная сборка PostgreSQL от 1С. Ее можно скачать на портале техподдержки (releases.1c.ru). Это стандартная СУБД с наложенными патчами от разработчиков 1С для корректной работы с метаданными платформы. Преимущества: Полностью бесплатна, официально поддерживается 1С. Недостатки: Отсутствуют продвинутые инструменты оптимизации, которые есть в коммерческих форках.
2. Postgres Pro Standard (для 1С). Это российская разработка, включенная в реестр отечественного ПО.
Преимущества: Содержит расширения, такие как online_analyze и plantuner. Эти модули позволяют СУБД лучше справляться с временными таблицами 1С, актуализируя статистику «на лету».
Недостатки: Высокая стоимость лицензии. На текущий момент цена может составлять значительную сумму (около 40-100 тыс. руб. и выше в зависимости от количества ядер или пользователей).
Для базы в 11 Гб и 5 пользователей бесплатной версии от 1С будет более чем достаточно при условии правильной настройки сервера.
Часто возникает вопрос об использовании бесплатной версии MS SQL Express. Выясним причину, почему в данном случае это невозможно: лимит объема базы данных в версии Express составляет 10 Гб. Поскольку база автора уже достигла 11 Гб, СУБД от Microsoft просто заблокирует запись новых данных. Поэтому PostgreSQL становится единственной бесплатной альтернативой полноценному SQL-серверу.
Просто установить СУБД недостаточно. В отличие от MS SQL, PostgreSQL требует ручной корректировки конфигурационного файла postgresql.conf. Рассмотрим ключевые параметры, которые необходимо изменить сразу после установки:
Разберем одну из главных технических трудностей при работе 1С на PostgreSQL — медленную работу виртуальных таблиц, особенно СрезПоследних. Из-за особенностей планировщика PostgreSQL, сложные запросы с соединениями к этой таблице могут выполняться в десятки раз медленнее, чем на MS SQL.
Проанализируем рекомендуемый метод решения этой проблемы. Вместо прямого соединения в одном запросе, необходимо сначала выгрузить данные из виртуальной таблицы во временную таблицу, а затем уже соединять ее с остальными данными.
Посмотрим на пример правильной структуры запроса для PostgreSQL:
// Шаг 1: Получаем срез последних во временную таблицу
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ ВТ_АктуальныеЦены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних;
// Шаг 2: Соединяем временную таблицу с основной выборкой
ВЫБРАТЬ
Товары.Ссылка,
ВТ_АктуальныеЦены.Цена
ИЗ
Справочник.Номенклатура КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_АктуальныеЦены КАК ВТ_АктуальныеЦены
ПО Товары.Ссылка = ВТ_АктуальныеЦены.Номенклатура;
Такой подход заставляет СУБД сначала вычислить результаты среза, а потом эффективно выполнить соединение, что предотвращает деградацию производительности.
После переезда на PostgreSQL важно изменить регламент обслуживания базы данных. В файловой версии мы делали простое копирование файла 1Cv8.1CD. На SQL-сервере алгоритм иной:
pg_dump для создания ежедневных копий.ANALYZE и VACUUM. Без обновления статистики планировщик начнет строить неверные планы запросов, и база «затормозит» уже через пару недель активной работы.pg_xlog (или pg_wal в новых версиях).Подводя итог, для небольшого предприятия с 5 пользователями переход на бесплатную версию PostgreSQL от 1С является оптимальным решением. Это позволит уйти от ограничений файловой базы, сохранив высокую стабильность системы при минимальных затратах на лицензирование СУБД. Главное — уделить внимание первоначальной настройке конфигурационных файлов и оптимизации критичных участков кода в конфигурации.