#1C #SQL Как ускорить загрузку DT в PostgreSQL — 3 апреля 2026 г. в 04:24:32.958
#1C #SQL Как ускорить загрузку DT в PostgreSQL Давным давно, когда Postgres был мало знаком с 1С и их отношения только развивались DT в Postgres загружался гораздо дольше чем в MS SQL. Те веремена прошли, а имидж остался. Сегодня расскажу как ускорить загрузку DT в PostgreSQL, какие настройки нужно для этого поменять на PostgreSQL и что для ускорения загрузки было сделано со стороны лучшей в мире платформы 1С. Этапы загрузки DT: 1. Создаём таблицы согласно схеме БД (константы, справочники, регистры и т.д.) 2. Заполняем талицы данными 3. Создам индексы на таблицах, согласно схеме БД Долгое время загрузка DT была однопоточной и в те времена (до версии 8.3.19) и главное падение скорости у PostgreSQL было на третьем этапе - Создание индексов. Падение скорости было обусловлено тем, что MS SQL умел создавать индексы многопоточно, а PostgreSQL нет Но теперь и 1С умеет многопоточно грузить DT и PostgreSQL умеет многопоточно создавать индексы и казалочь бы это и есть максимальная скорость, но нет)) Дальше посмотрим какие настройки PostgreSQL могут ещё ускорить создание индексов и как сбалансировать скорость загрузки DT с мощностью сервера СУБД, maintenance_work_mem - объём оперативной памяти в том числе и для создания индекса max_parallel_maintenance_workers - количество параллельных потоков создания индекса На время загрузки dt можно временно кратно увеличить эти значения ALTER SYSTEM SET maintenance_work_mem = 2GB; ALTER SYSTEM SET max_parallel_maintenance_workers = 2; 'select pg_reload_conf(); а после загрузки DT вернуть в исходное состояние 'ALTER SYSTEM RESET maintenance_work_mem; 'ALTER SYSTEM RESET max_parallel_maintenance_workers; 'select pg_reload_conf(); Тут важно подобрать параметры так, чтобы выставлять их минимально достаточными для максимальной скорости загрузки. Какие именно будут параметры именно в вашем случае покажет только тестирование. Но учтите, что количество потоков загрузки DT из конфигуратора = кол-ву ядер на сервере 1С. Т.е. если у нас 12 ядер на сервере 1С и мы выставили параметры параллелизма в 2 и объём оперативной памяти в 2 ГБ, то мы должны обеспечить на сервере СУБД минимум 2*12=24 ядра и 2*12=24ГБ памяти только для этой процедуры. Указать количество потоков загрузки dt можно только в пакетном режиме запуска конфигуратора с помощью параметра -JobsCount Особо заметный эффект от настроек и балансировки будет, если в базе есть большие таблицы, как и в целом любой параллелизм хорошо себя показывает именно на больших данных, а на малых скорее вреден чем полезен.

