Настройка СУБД PostgreSQL для работы с платформой 1С:Предприятие — это критически важный этап развертывания системы, от которого напрямую зависит стабильность и быстродействие учетных решений. Часто системные администраторы сталкиваются с тем, что рекомендации для разных версий (например, 11.5 и 11.7) кажутся противоречивыми. Разберем по шагам, как подготовить сервер к промышленной эксплуатации, основываясь на технических особенностях платформы 1С.
Прежде всего проанализируем процесс внесения изменений в основной конфигурационный файл postgresql.conf. Многие начинающие администраторы опасаются, что ручная правка файла может привести к сбоям. Выясним, как это происходит на практике.
Для применения новых параметров достаточно выполнить следующие действия:
postgresql.conf (обычно находится в директории data установленной СУБД) любым текстовым редактором.Важно помнить, что для версий в рамках одной мажорной ветки (например, от 11.0 до 11.9) принципиальных различий в составе параметров обычно нет. Рассмотрим подробнее, какие именно настройки критичны для 1С.
Для сервера с объемом оперативной памяти 48 ГБ и базой данных около 80 ГБ стандартные настройки «из коробки» будут крайне неэффективны. Проанализируем ключевые параметры управления памятью.
shared_buffers — это объем памяти, который сервер использует для совместного кэширования данных. Для 1С рекомендуется выделять около 25% от общего объема ОЗУ. В нашем случае это примерно 12 ГБ.
effective_cache_size — это оценка объема памяти, доступного для кэширования данных операционной системой и самой СУБД. Этот параметр не резервирует память физически, но помогает планировщику запросов понять, насколько вероятно нахождение данных в кэше. Рекомендуется устанавливать его на уровне 50–75% от общего объема ОЗУ. Для 48 ГБ оптимальным значением будет 32–36 ГБ.
Разберем параметры, влияющие на скорость выполнения сложных запросов 1С:
VACUUM). При большом объеме памяти здесь можно смело указать 1 ГБ или 2 ГБ, что существенно ускорит регламентные работы.Пример настройки в файле:
shared_buffers = 12GB
effective_cache_size = 36GB
work_mem = 64MB
maintenance_work_mem = 2GB
Платформа 1С активно использует индексы. Чтобы планировщик PostgreSQL чаще отдавал предпочтение индексному сканированию вместо полного чтения таблиц, необходимо скорректировать параметры стоимости.
Рассмотрим параметр random_page_cost. По умолчанию он равен 4.0, что ориентировано на медленные HDD. Если ваша база данных размещена на современных SSD или NVMe накопителях, это значение следует снизить до 1.1 или даже 1.0. Это «подскажет» системе, что случайное чтение данных происходит почти так же быстро, как и последовательное.
Также обратим внимание на seq_page_cost. Обычно его оставляют равным 1.0. Сближение этих двух коэффициентов делает планы запросов 1С более предсказуемыми и быстрыми на производительном железе.
PostgreSQL от «1С» содержит ряд патчей, но требует специфических настроек блокировок. Выясним, почему это важно. 1С работает с объектами метаданных, которые при выполнении одной транзакции могут накладывать сотни и тысячи блокировок.
off).on).Одной из главных проблем PostgreSQL является накопление «мусора» (мертвых кортежей) в таблицах при активном изменении данных. В 1С это происходит постоянно. Если autovacuum настроен неправильно, база начинает «раздуваться», а производительность падает.
Разберем, как заставить систему очищаться чаще:
Пример настройки блока autovacuum:
autovacuum = on
autovacuum_max_workers = 5
autovacuum_vacuum_scale_factor = 0.01
autovacuum_analyze_scale_factor = 0.01
Даже при идеально настроенном autovacuum, база данных 1С требует периодического ручного вмешательства. Рассмотрим основные операции обслуживания:
Обновление статистики (ANALYZE). Рекомендуется выполнять ежедневно, особенно после массовой загрузки данных или проведения регламентных документов в конце месяца. Без актуальной статистики планировщик может выбрать крайне неэффективный путь выполнения запроса.
Переиндексация (REINDEX). Со временем индексы могут деградировать и занимать лишнее место. Раз в неделю (например, в выходные) полезно выполнять переиндексацию наиболее нагруженных таблиц или всей базы целиком. Это восстанавливает структуру индексов и ускоряет поиск.
Контроль подключений. Параметр max_connections должен быть настроен с запасом относительно количества пользователей 1С. Однако помните, что каждое соединение потребляет память (см. work_mem). Оптимально использовать менеджер подключений, такой как pgbouncer, если количество пользователей превышает 100.
Для мониторинга медленных запросов полезно включить параметр log_min_duration_statement. Если установить его в значение 500ms, все запросы, выполняющиеся дольше полусекунды, будут фиксироваться в логе. Проанализировав эти логи, мы сможем понять, какие именно операции в 1С требуют оптимизации или дополнительных индексов.
Таким образом, настройка PostgreSQL для 1С сводится не просто к копированию значений из интернета, а к адаптации параметров под конкретное железо и специфику работы платформы с транзакциями и временными таблицами. Помните, что после внесения любых изменений необходимо провести тестирование на копии базы данных, чтобы убедиться в стабильности выбранной конфигурации.