Работа с большими файловыми базами 1С (формат .1CD) всегда сопряжена с техническими ограничениями. Когда размер базы достигает 50 Гб и более, штатные механизмы, такие как "Свертка базы", могут перестать работать корректно: процесс длится неделями, "уходит в туман" или завершается ошибкой нехватки памяти. В этой статье мы подробно разберем, почему это происходит, и рассмотрим проверенные стратегии решения этой проблемы, основанные на опыте профессионального сообщества.
Прежде чем переходить к решениям, давайте разберемся в причинах. Файловый вариант работы 1С имеет архитектурные особенности:
Рассмотрим стратегии, которые помогут нам "урезать" базу, когда стандартный путь закрыт.
Это наиболее надежный метод для критически больших баз. Вместо того чтобы пытаться удалить старые данные ("отрезать хвост"), мы перенесем актуальные данные в новую систему.
Давайте проанализируем преимущества этого подхода. Операция записи (INSERT) в новую, чистую базу без фрагментации проходит намного быстрее и стабильнее, чем удаление (DELETE) из старой, перегруженной базы.
План действий:
EnterpriseData) или выгрузки данных.Этот метод гарантирует, что мы получим компактную базу без "мусора" и фрагментации.
Зачастую огромный объем базы занимают не сами документы, а служебная информация. Если удалить её, размер базы может уменьшиться на 30–50%, после чего штатная свертка может пройти успешно.
Давайте проверим следующие объекты:
В конфигурациях вроде УТ 11 и ERP механизм версионирования (хранение истории изменений документов) сохраняет каждую версию объекта в регистр сведений ВерсииОбъектов. За 15 лет этот регистр может разрастись до десятков гигабайт.
Решение: Запустим стандартную обработку очистки версий. Оставим историю только за последние 3–6 месяцев. Это операция выполняется порционно и редко приводит к зависанию всей системы.
Даже если вы не храните картинки номенклатуры, в базе могут скапливаться сканы договоров, файлы обмена с сайтами или вложения электронных писем. Хранить их внутри файла 1Cv8.1CD при таких объемах нерационально.
Решение: Настроим хранение файлов в томах на диске (Администрирование – Настройки работы с файлами – Хранить файлы в томах на диске). После переноса файлов база значительно "похудеет" после сжатия.
Если нам необходимо сохранить именно текущую базу (с историей), но мощности текущего компьютера не хватает для обработки транзакций удаления, мы можем временно использовать более мощное окружение.
Файловая база работает медленнее SQL-версии на операциях массового изменения данных. Мы можем развернуть тестовый стенд:
Можно договориться с партнерами-франчайзи или воспользоваться облачными сервисами: загрузить туда копию базы, выполнить тяжелую операцию свертки на их мощном оборудовании, а затем забрать готовый результат.
Для небольших компаний, у которых нет лицензии на сервер 1С, существует интересная альтернатива, позволяющая ускорить файловую базу.
Начиная с платформы 8.3.14, доступен так называемый "Автономный сервер". Для файловых баз до 3-х пользователей он не требует отдельной серверной лицензии.
Это позволяет запускать базу не в процессе 1cv8c.exe (клиент), а через серверный процесс ibsrv.exe. Это дает доступ к 64-битному адресному пространству памяти (если установлена 64-битная платформа), что исключает ошибки "Недостаточно памяти" при свертке.
Узкое место файловой базы при удалении данных — дисковые операции ввода-вывода. Если у нас есть компьютер с 64 Гб оперативной памяти (или больше), мы можем:
После любой операции массового удаления данных (свертки или очистки регистров) размер файла 1Cv8.1CD на диске автоматически не уменьшится. Внутри файла образуются пустоты.
Чтобы физически уменьшить размер файла, необходимо выполнить следующие действия в Конфигураторе:
Администрирование -> Тестирование и исправление.Также рекомендуется перед сверткой проверить физическую целостность базы утилитой chdbfl.exe (находится в папке bin установленной платформы), так как скрытые ошибки структуры часто являются причиной зависания длительных операций.
Для базы в 50 Гб на "слабом" железе простая свертка обречена на провал. Мы рекомендуем действовать по следующему алгоритму:
ВерсииОбъектов и вынести файлы во внешние тома. Сделать сжатие.