Почему тормозит 1С после перехода с Microsoft SQL Server на PostgreSQL и как это исправить?

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

Переход с проприетарной СУБД Microsoft SQL Server на свободную PostgreSQL — это серьезный шаг, требующий не просто переноса данных, а глубокой адаптации инфраструктуры. Если после миграции вы столкнулись с резким падением производительности, вплоть до невозможности проведения документов, разберем, что могло пойти не так и как вернуть системе былую скорость.

Анализ причин замедления

Важно понимать: PostgreSQL и MSSQL имеют принципиально разные механизмы оптимизации запросов. MSSQL «прощает» многие огрехи в коде 1С за счет «умного» оптимизатора. PostgreSQL требует более жесткого соблюдения правил работы с индексами и статистикой. Основные причины тормозов:

  1. Отсутствие базовой настройки: «Из коробки» postgresql.conf настроен на минимальное потребление ресурсов и не подходит для высоконагруженных систем с 40 пользователями.
  2. Использование «ванильной» сборки: Обычная версия PostgreSQL из репозиториев Linux может работать медленнее, чем специально адаптированная сборка от компании 1С, которая содержит патчи для оптимизации работы со временными таблицами и планами запросов.
  3. Некорректная работа с кодом 1С: Некоторые конструкции в коде (например, Полное соединение или запросы к виртуальным таблицам СрезПоследних) требуют иной стратегии индексации.

Шаг 1: Настройка конфигурации сервера

Первым делом проанализируем параметры postgresql.conf. Значения по умолчанию не позволят базе данных работать быстро. Нам необходимо адаптировать параметры под объем доступной оперативной памяти сервера:

Шаг 2: Регламентное обслуживание и автовакуум

В PostgreSQL критически важную роль играет процесс autovacuum. В отличие от MSSQL, здесь данные не перезаписываются на месте, а помечаются как удаленные. Если autovacuum не успевает очищать «мертвые» строки (bloat), производительность будет стремительно падать. Рассмотрим настройку параметров для интенсивных таблиц (регистров):

Настройте интенсивность очистки для таблиц с большим объемом записи, уменьшив порог срабатывания:


ALTER TABLE ИмяТаблицы SET (autovacuum_vacuum_scale_factor = 0.01);
ALTER TABLE ИмяТаблицы SET (autovacuum_analyze_scale_factor = 0.005);

Шаг 3: Оптимизация запросов 1С

Рассмотрим, как 1С работает с запросами на PostgreSQL. Поскольку планировщик запросов более чувствителен к статистике, необходимо следить за актуальностью данных. Если вы замечаете, что конкретные отчеты или проведение документов «зависают», используйте расширение pg_stat_statements для выявления самых «тяжелых» запросов.

При написании запросов старайтесь избегать:

Шаг 4: Дисковая подсистема и архитектура

PostgreSQL крайне чувствителен к задержкам дисковой подсистемы (I/O Latency). Если у вас используется HDD, вы не добьетесь производительности, сравнимой с MSSQL на быстрых дисках. Разделите потоки данных:

Заключение: работа над ошибками

Переход на свободную СУБД — это задача для системного администратора, готового погрузиться в тонкую настройку ОС и СУБД. Не пытайтесь просто перенести файлы базы данных. Используйте специализированную сборку postgresql-1c, проводите регулярное обслуживание индексов, следите за статистикой запросов и помните, что 40 пользователей — это значительная нагрузка, требующая квалифицированной настройки каждого уровня системы.

← На главную