Рассмотрим распространенную и крайне неприятную ситуацию: при проведении планового обновления конфигурации (например, 1С:Бухгалтерия 3.0) на этапе реструктуризации базы данных процесс длится несколько часов и завершается критической ошибкой «Недостаточно памяти» (Out of Memory). При этом увеличение физической оперативной памяти (ОЗУ) до 8 или 16 ГБ, правка через bcdedit для расширения адресного пространства 32-битного процесса и стандартные утилиты проверки вроде chdbfl.exe часто не приносят результата.
Проанализируем причины возникновения этой проблемы и разберем по шагам наиболее эффективные способы её решения.
В файловом варианте работы платформы 1С внутренний движок базы данных (SDBL) при реструктуризации таблиц создает временные индексы и выполняет тяжелые проверки на уникальность измерений регистров, кодов справочников и других метаданных. Когда размер файловой базы данных превышает 15–20 ГБ, классический 32-разрядный клиент 1С упирается в лимит адресного пространства (не более 2–4 ГБ на процесс), даже если на самом сервере установлена 64-битная операционная система и достаточно физической ОЗУ.
Самым простым и эффективным способом решить проблему реструктуризации без перехода на клиент-серверную версию является запуск Конфигуратора через 64-разрядный клиент 1С:Предприятие.
C:\Program Files\1cv8\х.х.х.х\bin\1cv8.exe).64-разрядный процесс снимает ограничения 32-битного адресного пространства и задействует всю доступную оперативную память системы, что позволяет движку базы успешно завершить тяжелые этапы реструктуризации.
Если даже при использовании 64-битной платформы возникают сложности, разберем дополнительные проверенные методы:
1. Пошаговое обновление конфигурации. Не рекомендуется обновлять конфигурацию сразу через несколько десятков релизов. Обновление по 1–2 промежуточным релизом существенно снижает объем одноразово реструктурируемых данных и нагрузку на ОЗУ.
2. Очистка помеченных на удаление объектов и сжатие. Перед обновлением удалим все лишние элементы и выполним сжатие таблиц через меню Администрирование — Тестирование и исправление (выбрав пункты «Реструктуризация таблиц» и «Реиндексация»).
3. Настройка виртуальной памяти (файла подкачки). Проверим параметры файла подкачки в операционной системе Windows. Рекомендуется зафиксировать его размер в пределах 16–32 ГБ на высокое производительном SSD/NVMe-диске.
4. Обновление в пакетном режиме (командная строка). Запуск процедуры обновления через командную строку позволяет избежать расхода памяти графической оболочкой платформы:
"C:\Program Files\1cv8\8.3.23.1865\bin\1cv8.exe" DESIGNER /F "C:\Bases\Accounting" /N "Администратор" /P "Пароль" /UpdateCfg "C:\Updates\1cv8.cf" /UpdateDBCfg
5. Отключение полнотекстового поиска и фоновых заданий. Индексация полнотекстового поиска и выполнение регламентных заданий создают параллельную нагрузку на память. Перед реструктуризацией рекомендуется отключить полнотекстовый поиск и заблокировать фоновые задания.
6. Временный перенос базы в СУБД (PostgreSQL / MS SQL). Если файловый вариант исчерпал свои возможности, базу временно загружают в бесплатную СУБД (например, PostgreSQL), проводят обновление средствами клиент-серверного механизма, а затем при необходимости выгружают обновленные данные обратно в файловый формат.