При обновлении крупных информационных баз «1С:Бухгалтерия предприятия 3.0» (объемом от 300 Гб и выше) специалисты часто сталкиваются с ситуацией, когда процесс принятия изменений в конфигураторе затягивается на несколько суток. Особенно остро эта проблема проявилась в релизах ветки 3.0.142 и выше, где внедрялись масштабные изменения в механизмах Единого налогового счета (ЕНС). Рассмотрим подробно, почему стандартные методы не всегда работают, и как технически грамотно ускорить процесс обновления.
Проанализируем ситуацию: при попытке обновить базу до версии 3.0.142.67 на платформе 8.3.21.1895 процесс останавливается на этапе «идет процесс реструктуризации последовательности документов организаций». Если в базе накоплено более 50 миллионов документов, стандартный механизм обновления может работать крайне неэффективно. Даже включение режима фоновой реструктуризации через параметр UpdateDBCfg=v2 в файле conf.cfg не всегда спасает ситуацию на старых версиях платформы.
Выясним причину такого поведения. Основная сложность заключается в том, что новые релизы БП 3.0 радикально меняют структуру регистров и последовательностей для учета ЕНС. Это требует от СУБД (MS SQL Server или PostgreSQL) полной переработки огромных индексных таблиц. Если платформа не умеет эффективно распараллеливать эти задачи, процесс превращается в «бесконечное» ожидание.
Как показала практика, ключевым фактором успеха является использование актуальной версии платформы. Несмотря на то что в системных требованиях к конфигурации может быть указана версия 8.3.21, для баз с большим объемом данных этого недостаточно. Рассмотрим, почему переход на платформу 8.3.23 или выше решает проблему:
8.3.23 разработчики 1С существенно переработали ядро платформы в части взаимодействия с СУБД при реструктуризации. Процессы, которые в 8.3.21 шли в один поток, теперь могут эффективно распределяться.rphost потреблял избыточное количество ресурсов, не продвигаясь в выполнении задачи..ldf) и переполнение tempdb на стороне SQL-сервера.Важно: После установки платформы 8.3.23.1912 или выше, обновление той же самой базы, которое ранее длилось 5 дней, может завершиться за 10–15 минут, так как платформа корректно определит отсутствие необходимости в полной перезаписи таблиц или выполнит её оптимально.
Если обновление всё же требует длительной переработки таблиц, разберем, как правильно задействовать механизм UpdateDBCfg=v2. Этот параметр позволяет выполнять основную часть работы в фоновом режиме, не блокируя работу пользователей (хотя для финального принятия изменений монопольный доступ всё же потребуется).
Для активации механизма необходимо отредактировать файл conf.cfg, который обычно находится в папке bin/conf установленной платформы на сервере 1С. Добавим в него следующую строку:
UpdateDBCfg=v2
После этого при запуске обновления из конфигуратора система предложит выполнить реструктуризацию на сервере. Проанализируем преимущества этого подхода:
Перед началом тяжелого обновления выполним ряд регламентных процедур, которые помогут избежать ошибок «рандомного» прерывания процесса:
Max Degree of Parallelism в настройках SQL Server. Для высоконагруженных баз 1С вендор рекомендует значение 1 или 2, однако на время тяжелой реструктуризации (и только на это время!) можно временно увеличить его до количества физических ядер одного процессора, чтобы ускорить создание индексов.ДокументыОрганизаций содержит неактуальные данные за прошлые десятилетия, рассмотрим возможность свертки базы. Хотя простая пометка на удаление не удаляет записи из последовательности полностью, физическое удаление объектов значительно сокращает объем реструктурируемых данных.Разберем ситуацию, когда сервер 1С и SQL-сервер разнесены по разным виртуальным машинам. В условиях обновления базы объемом 400 Гб сетевой стек становится «узким горлышком». Проанализируем следующие рекомендации:
Посмотрим на задержки (latency) дисковой подсистемы. Если они превышают 10-20 мс, любая реструктуризация будет идти мучительно долго. Для ускорения процесса на время обновления можно рассмотреть вариант временного переноса сервера 1С на ту же машину, где расположен SQL-сервер. Это позволит использовать протокол Shared Memory вместо TCP/IP, что существенно увеличит скорость передачи данных между процессами.
Подведем итог и составим пошаговый план для успешного обновления крупной БД:
8.3.23 или выше), даже если конфигурация формально поддерживает более старую..bak файла).UpdateDBCfg=v2. Если платформа актуальна, процесс реструктуризации последовательностей пройдет по оптимизированному сценарию и не займет много времени.Помните, что в новых релизах 1С конфигурация подготавливается с расчетом на современные возможности платформы. Использование устаревших версий ядра 1С на базах объемом в сотни гигабайт — это прямой путь к многодневным простоям предприятия.