Как ускорить длительную реструктуризацию больших баз 1С:Бухгалтерия 3.0 при обновлении?

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

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

Выясним причину: почему реструктуризация в релизах 3.0.99+ стала такой долгой

Проанализируем ситуацию: в версиях 1С:БП 3.0.95–3.0.100 разработчики внедрили масштабные изменения, связанные с системой прослеживаемости товаров и обновлением алгоритмов учета НДС. Для этого потребовалось изменить структуру метаданных ключевых регистров накопления. Когда платформа обнаруживает изменение в структуре таблицы (например, добавление нового измерения или изменение типа реквизита), она запускает процесс реструктуризации.

Для базы объемом в 400 Гб это означает, что SQL-сервер должен физически перелопатить миллиарды строк данных, перестроить индексы и обновить статистику. Ситуация усугубляется, если в базе накоплены данные за 5–10 лет без проведения свертки. Разберем по шагам, как подготовить сервер и платформу к таким нагрузкам.

Механизм «Реструктуризация v2»: новый подход платформы

Одним из самых эффективных способов ускорения является использование механизма Реструктуризации версии 2, который появился в платформе «1С:Предприятие», начиная с версии 8.3.11. Рассмотрим подробнее принцип его работы. В отличие от стандартного метода, который блокирует таблицу и вносит изменения «на лету», версия 2 работает иначе:

  1. Система создает новую таблицу в базе данных с уже измененной структурой.
  2. Данные из старой таблицы копируются в новую в фоновом режиме (или максимально быстрым потоком).
  3. После завершения копирования старая таблица удаляется, а новая переименовывается.

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

Например, в консоли администрирования кластера серверов 1С для конкретной базы можно установить режим обновления конфигурации, который будет использовать этот механизм. Это позволяет избежать «зависания» SQL-транзакций при работе с огромными объемами данных.

Оптимизация MS SQL Server для проведения обновлений

Если мы работаем в связке с MS SQL Server, нам необходимо временно изменить настройки СУБД, чтобы дать 1С максимум ресурсов. Проанализируем ключевые параметры:

1. Настройка параллелизма (MAXDOP).

Для повседневной работы 1С часто рекомендуют ограничивать Max Degree of Parallelism значением 1 или 4. Однако во время тяжелой реструктуризации вендор рекомендует устанавливать этот параметр в 0. Это заставляет SQL Server использовать все доступные ядра процессора для выполнения операций перестроения индексов и копирования таблиц.

Пример команды для изменения настройки (выполнять в SQL Management Studio):


EXEC sys.sp_configure N'show advanced options', N'1';
RECONFIGURE;
EXEC sys.sp_configure N'max degree of parallelism', N'0';
RECONFIGURE;

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

2. Модель восстановления (Recovery Model).

Это критический момент. Если ваша база работает в режиме Full, то при реструктуризации таблицы объемом 100 Гб файл лога транзакций (LDF) может вырасти до 200–300 Гб, что приведет к остановке сервера из-за нехватки места. Перед началом обновления переведите базу в режим Simple.

ALTER DATABASE [Ваша_База] SET RECOVERY SIMPLE;

Это отключит детальное логирование каждой измененной строки и значительно ускорит дисковые операции.

3. Настройка TempDB.

При реструктуризации 1С активно использует временные таблицы. Убедитесь, что файлы tempdb расположены на самом быстром дисковом массиве (желательно NVMe SSD). Также проследите, чтобы количество файлов tempdb соответствовало количеству ядер процессора (но не более 8), чтобы исключить конфликты при распределении страниц в памяти.

Административные меры и работа с историческими данными

Как справедливо замечено в обсуждении, хранение данных за 5–7 лет в оперативной базе — это большой риск. Разберем ситуацию с управленческой точки зрения. Если руководство не готово к полной свертке базы (удалению старых документов), предложим компромиссный вариант — создание «Исторической базы».

  1. Создаем полную копию базы перед обновлением и называем её «Архив_2023».
  2. В рабочей базе проводим процедуру свертки или просто удаляем старые движения регистров, оставляя сами документы для ссылочной целостности.
  3. Для получения отчетов за прошлые годы пользователи заходят в архивную базу, а текущую работу и обновления ведут в легкой и быстрой рабочей базе.

Это позволит сократить время реструктуризации с 6 часов до 30–40 минут, так как объем данных в регистрах НДС и бухгалтерии уменьшится в разы.

Проверка целостности перед стартом

Иногда бесконечная реструктуризация вызвана логическими ошибками в таблицах SQL. Перед началом процесса крайне желательно выполнить проверку базы. Рассмотрим команду:

DBCC CHECKDB ('Ваша_База') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Если в базе есть «битые» индексы, 1С может бесконечно пытаться их перестроить во время обновления. Исправление ошибок до начала обновления сэкономит вам массу времени.

Заключение

Реструктуризация базы объемом 400 Гб за 6 часов — это неплохой результат для стандартных настроек. Однако, используя Реструктуризацию v2, переводя SQL в режим Simple и временно увеличивая MAXDOP, вы сможете значительно ускорить этот процесс. Помните, что каждое крупное обновление типовой конфигурации — это повод задуматься об оптимизации объема хранимых данных и пересмотре политики обслуживания базы данных.

← На главную