Многие разработчики и системные администраторы задаются вопросом: почему абсолютно «пустая» база данных 1С (например, «Управление нашей фирмой», «Управление торговлей» или «Комплексная автоматизация») сразу после создания весит около 1–1.5 Гигабайт? Ведь в ней еще нет ни единого документа, ни одного контрагента или элемента номенклатуры!
Главным виновником такого «раздувания» конфигурации являются встроенные библиотеки — в частности, Библиотека стандартных подсистем (БСП) и Библиотека подключаемого оборудования (БПО). В составе БПО поставляются десятки макетов драйверов для самого разного торгового оборудования. В этой статье мы подробно разберем, как эти макеты влияют на размер базы данных, проведем детальный технический анализ и рассмотрим практические способы оптимизации дискового пространства.
Давайте проанализируем, что представляет собой макет драйвера в современной конфигурации 1С. Это не просто небольшая библиотека или скрипт. Требования к совместимости программного обеспечения обязывают разработчиков оборудования поставлять свои решения в виде единого ZIP-архива (внешней компоненты). Этот архив содержит:
В результате один-единственный макет драйвера для фискального регистратора или терминала сбора данных может занимать от 10 до 50 Мегабайт в сжатом виде. Когда таких драйверов в конфигурации несколько десятков, общий объем бинарных данных внутри метаданных конфигурации мгновенно превышает 500–700 Мегабайт. Вся эта информация хранится в общих макетах метаданных.
Рассмотрим реальный практический эксперимент по удалению макетов драйверов из типовой конфигурации «1С:Управление нашей фирмой» редакции 1.6.
.cf). Исходный вес файла .cf составляет 590 Мегабайт.ОбщиеМакеты и удаляем макеты неиспользуемых драйверов торгового оборудования (оставляя только те, которые действительно планируется использовать на проекте)..cf). Вес нового файла составляет всего 207 Мегабайт! Нам удалось сократить объем конфигурации почти в 3 раза..1cd) сокращается с 1.6 Гигабайт до 0.8 Гигабайт (после выполнения сжатия таблиц).Таким образом, удаление бинарных файлов драйверов дает колоссальный прирост свободного места, что крайне критично при развертывании большого количества баз на серверах разработки или при хранении частых резервных копий (бэкапов).
Просто удалить общие макеты из дерева метаданных конфигурации недостаточно. При инициализации программы или обновлении информационной базы срабатывают служебные процедуры БПО. Давайте обратим внимание на программный код, который отвечает за регистрацию драйверов в системе:
// Обновить поставляемые драйверы в составе конфигурации.
Процедура ОбновитьПоставляемыеДрайвера() Экспорт
// Инициализация обновления драйверов торгового оборудования
МенеджерОборудованияСлужебный.ОбновитьПоставляемыеДрайверы();
КонецПроцедуры
Этот код обращается к предопределенным элементам справочника ДрайверыОборудования (или аналогичного справочника в составе вашей версии БПО) и пытается сопоставить их со встроенными общими макетами конфигурации. Если вы физически удалите макеты из метаданных, но оставите вызовы процедур или предопределенные элементы, система при запуске может выдать критическую ошибку или попытаться восстановить настройки по умолчанию.
Поэтому при ручной очистке конфигурации обязательно убедитесь, что вы скорректировали логику обновления поставляемых драйверов или удалили соответствующие предопределенные элементы оборудования, которые вы не планируете использовать.
К счастью для разработчиков, фирма «1С» осознала проблему избыточного веса конфигураций и внедрила новую архитектуру интеграции Библиотеки подключаемого оборудования. В современных версиях БПО реализована блочная концепция поставки драйверов. Разработчикам предлагается три варианта интеграции библиотеки в прикладные решения:
Использование первого варианта интеграции полностью решает проблему раздутого размера баз данных и избавляет разработчиков от необходимости вручную вычищать метаданные при каждом обновлении конфигурации.
Разбирая тему оптимизации размера базы данных, важно затронуть фундаментальный механизм платформы «1С:Предприятие 8» — хранение конфигураций поставщика в СУБД. Многие разработчики замечают, что при включении возможности редактирования («снятии замка») пустая база моментально увеличивается в объеме почти в два раза. Выясним техническую причину этого явления.
Внутри физического файла базы данных .1cd (или в соответствующих таблицах SQL-сервера, таких как Config, ConfigSave) одновременно могут храниться до трех различных конфигураций:
Когда база находится на полной поддержке (на «замке»), платформа оптимизирует хранение данных и физически не дублирует одинаковую информацию. Но как только вы нажимаете кнопку «Разрешить изменение», платформа вынуждена создать обособленную физическую копию конфигурации поставщика, чтобы хранить ее отдельно для возможности будущего сравнения и объединения. В результате размер метаданных в вашей СУБД удваивается.
Если вам критически важно уменьшить размер базы (например, для локальной работы на ноутбуке разработчика с ограниченным объемом SSD и оперативной памяти), вы можете полностью снять конфигурацию с поддержки. Это действие удалит физические таблицы конфигурации поставщика из базы данных и вернет исходный объем, однако полностью лишит вас возможности автоматического обновления конфигурации через стандартный механизм поддержки.
Если перед вами стоит задача максимально сократить размер информационной базы без радикального удаления программного кода и снятия с поддержки, рекомендуем выполнить следующие шаги по оптимизации:
По умолчанию все загружаемые файлы (сканы договоров, PDF-документы, изображения номенклатуры) сохраняются непосредственно в СУБД. Проанализируйте базу: файлы могут занимать до 80% всего ее объема. Перевод хранения файлов в физические тома на диске (в сетевую папку или локальный каталог сервера) позволит разгрузить базу данных, ускорить ее резервное копирование и существенно повысить быстродействие СУБД.
Если в базе активно используется подсистема «Версионирование объектов» из состава БСП, то история изменений каждого документа сохраняется в регистре сведений ВерсииОбъектов. Со временем этот регистр разрастается до гигантских масштабов. Настройте регламентное задание по автоматическому удалению версий объектов старше определенного срока (например, старше 3 или 6 месяцев).
Важно помнить, что после интерактивного удаления документов, файлов или макетов физический размер базы данных автоматически не уменьшается. Платформа просто помечает освободившиеся страницы данных как свободные для записи новой информации. Чтобы вернуть свободное место операционной системе, необходимо выполнить процедуру усечения.
Для файловых баз данных:
chdbfl.exe (она находится в каталоге установки платформы 1С в папке bin) и установите флаг «Сжатие таблиц».Для клиент-серверных баз данных (MS SQL Server, PostgreSQL):
.mdf) и логов транзакций (.ldf) на сервере.