Ускорит ли перенос каталога баз PostgreSQL на SSD работу 1С?

Системный администратор 1С v8.3 (Обычные формы) Бухгалтерский учет
← На главную

При работе в клиент-серверном варианте 1С:Предприятия пользователи часто сталкиваются с проблемой «подтормаживания» системы при формировании тяжелых отчетов или проведении документов. Если при этом открыть системный монитор производительности СУБД, можно обнаружить, что дисковая подсистема (особенно если используется традиционный жесткий диск HDD) загружена на 100%. Мы разберем по шагам, поможет ли перенос файлов базы данных PostgreSQL на твердотельный накопитель (SSD), какие еще сопутствующие настройки необходимо выполнить на уровне СУБД и сервера приложений 1С, чтобы выжать максимум производительности из вашего оборудования.

Выясняем причину: почему HDD не справляется с СУБД?

Для начала проанализируем ситуацию, почему обычный жесткий диск испытывает колоссальные перегрузки при работе с PostgreSQL. СУБД по умолчанию проектируются с расчетом на максимальную сохранность данных. При транзакционной нагрузке критически важными параметрами СУБД являются fsync и full_page_writes. Когда эти параметры включены (что является стандартом для рабочих баз данных), СУБД после каждой транзакции принудительно заставляет дисковый контроллер сбрасывать кэш на физический накопитель.

Для классического HDD с механическими головками это означает постоянное позиционирование на разные участки диска, из-за чего скорость случайной записи падает до критически низких значений. Ситуация усугубляется, когда на одном физическом диске установлена операционная система, запущен сервер 1С:Предприятия со своими временными файлами, крутится служба PostgreSQL и лежат сами файлы баз данных. Такая конфигурация нарушает базовое правило системного администрирования: база данных должна располагаться отдельно от операционной системы и файлов подкачки.

Перенос каталога баз PostgreSQL на SSD

Перенос файлов базы данных на SSD действительно является самым простым и в то же время наиболее эффективным способом решения проблемы «бутылочного горлышка» дисковой подсистемы. Скорость обработки случайных запросов блоками по 4 Кб на SSD в десятки и сотни раз выше, чем на HDD. Однако при переходе на твердотельные накопители важно учитывать несколько нюансов:

  1. Выбор правильного типа накопителя. Обычные потребительские SATA SSD («домашние» серии) быстро исчерпают свой ресурс (DWPD) под нагрузкой СУБД из-за постоянной перезаписи временных таблиц и логов предзаписи (WAL). Рекомендуется использовать серверные решения (Enterprise SSD) с интерфейсом NVMe. Они обладают повышенной отказоустойчивостью и поддерживают глубокие очереди команд.
  2. Размер кластера файловой системы. При форматировании нового SSD-накопителя под нужды PostgreSQL обязательно выберите размер кластера (размер блока) равным 64 КБ вместо стандартных 4 КБ. Это оптимизирует чтение-запись крупных файлов данных 1С и снизит фрагментацию диска.
  3. Настройка электропитания. В операционной системе, где запущен сервер, выберите схему управления питанием «Высокая производительность» (High Performance). Это не позволит процессору искусственно снижать частоту системной шины и задерживать обработку дисковых очередей.

Перенос журнала регистрации и сеансовых данных 1С на SSD

Многие ошибочно полагают, что достаточно перенести только СУБД. Однако сам сервер 1С:Предприятия создает огромную нагрузку на дисковую подсистему. Интенсивную запись генерирует технологический журнал (если он включен) и, самое главное, журнал регистрации. В современных версиях платформы 1С журнал регистрации хранится в формате SQLite, который крайне чувствителен к скорости случайного доступа.

Чтобы перенести служебные файлы кластера 1С (включая журнал регистрации и кэш) на быстрый диск SSD, нам потребуется отредактировать параметры запуска службы ragent. Для этого используется специальный ключ -d.

Рассмотрим по шагам, как перенести общие данные кластера:

  1. Откройте редактор реестра Windows или свойства службы 1С:Предприятия.
  2. Найдите строку запуска службы агента. По умолчанию она выглядит примерно так:
    
    "C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
    
  3. Измените путь в параметре -d на каталог, расположенный на вашем новом быстром SSD-диске:
    
    "C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1C_ClusterData"
    
  4. Остановите службу сервера 1С, физически скопируйте всё содержимое старой папки srvinfo в новый каталог на диске D, после чего запустите службу заново.

Решение специфических проблем конфигураций 1С (на примере БГУ 1.0)

Иногда даже после перехода на SSD отчеты могут продолжать подтормаживать. Проанализируем специфику работы конфигурации «Бухгалтерия государственного учреждения 1.0». В отличие от более новых решений, в БГУ 1.0 отсутствует автоматический сдвиг границы расчета итогов.

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

Решение: регулярно выполняйте операцию пересчета и установки актуальной границы итогов через монопольный режим в режиме «1С:Предприятие» или через управление итогами в конфигураторе.

Также стоит упомянуть проблему оптимизатора PostgreSQL, связанную со сложными запросами с соединениями (JOIN) и подзапросами. В некоторых релизах БГУ (например, при заполнении документов инвентаризации) система может зависать. В этом случае помогает временное отключение использования вложенных циклов оптимизатора. Для этого в файле настроек postgresql.conf установите параметр:

enable_nestloop = off

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

Дополнительные настройки PostgreSQL для ускорения отчетов

Помимо физического переноса данных, обязательно скорректируйте ключевые параметры производительности в конфигурационном файле СУБД:

Регулярное регламентное обслуживание баз на PostgreSQL

В отличие от СУБД MS SQL, PostgreSQL использует механизм многоверсионности строк (MVCC). Это означает, что при изменении или удалении записей в базе физически строки не удаляются, а лишь помечаются как неактивные. Со временем база «раздувается» (эффект bloat), что приводит к существенному замедлению чтения таблиц даже на SSD-накопителях.

Для борьбы с этим эффектом настройте регулярное выполнение регламентных процедур СУБД:

  1. Ежедневный запуск команды ANALYZE для обновления статистики оптимизатора запросов.
  2. Еженедельный запуск процедуры очистки неиспользуемого пространства VACUUM (или VACUUM FULL в периоды наименьшей активности пользователей).
  3. Регулярный реиндекс (REINDEX) наиболее нагруженных таблиц базы данных 1С.

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

← На главную