Как существенно уменьшить размер базы 1С и оптимизировать место на диске?

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

Часто системные администраторы и программисты 1С сталкиваются с ситуацией, когда после проведения свертки информационной базы и удаления огромного количества документов (например, за несколько лет), физический размер файла базы данных .1CD или размер в SQL практически не уменьшается. Рассмотрим подробнее, почему так происходит, и разберем по шагам, как эффективно «похудеть» базу, чтобы ее было удобно пересылать и архивировать.

Анализируем структуру данных: ищем виновника торжества

Прежде чем приступать к удалению, выясним причину раздувания базы. Удаление документов часто не дает эффекта, так как основные данные могут храниться в регистрах сведений, макетах или технических таблицах. Проанализируем ситуацию с помощью инструментария. Если у нас файловая база, воспользуемся утилитой Tool_1CD. Она позволяет увидеть физический размер каждой таблицы внутри файла .1CD. Если база серверная, построим стандартный отчет в консоли управления MSSQL — «Disk Usage by Top Tables».

Обратим внимание на следующие таблицы:

Оптимизируем конфигурацию и метаданные

Разберем важный нюанс: в базе, которая стоит на поддержке с возможностью изменений, хранится не одна, а целых три конфигурации: основная, конфигурация базы данных и конфигурация поставщика. Каждая из них в современных типовых решениях (БП 3.0, УТ 11, ERP) может весить от 500 Мб до 1 Гб. В сумме только метаданные могут занимать около 2 Гб, даже если в базе совсем нет документов.

Проанализируем шаги по оптимизации конфигурации:

  1. Снятие с поддержки. Если критически важно уменьшить размер (например, для пересылки), можно временно снять базу с поддержки. Это удалит конфигурацию поставщика. Однако помните, что обновлять такую базу станет сложнее — потребуется полный файл .cf.
  2. Очистка общих макетов. В современных конфигурациях сотни мегабайт занимают макеты драйверов торгового оборудования. Если вы не используете специфические кассы или сканеры, эти макеты можно аккуратно удалить из конфигурации (предварительно сделав бэкап). Это может дать экономию до 500-800 Мб.
  3. Выгрузка и загрузка через файл конфигурации. Попробуем выгрузить конфигурацию в файл .cf, создать чистую базу и загрузить её обратно. Иногда это помогает избавиться от внутреннего «мусора» в таблицах метаданных.

Очистка служебных данных и технических регистров

Выясним причину, по которой «сжатие таблиц» не всегда помогает. После массового удаления документов в базе остаются записи в связанных регистрах. Огромный объем часто занимают данные, о которых пользователь даже не догадывается.

Рассмотрим основные точки очистки:


// Пример программной очистки регистра (в модуле обработки)
Набор = РегистрыСведений.ЗамерыПроизводительности.СоздатьНаборЗаписей();
Набор.Записать();

Физическое сжатие файла базы данных

Важно понимать: когда 1С удаляет запись, она просто помечает место в файле .1CD как «свободное», но размер файла на диске не уменьшается. Чтобы вернуть место операционной системе, нужно выполнить физическую реорганизацию.

Выполним следующие действия:

  1. Запустим Конфигуратор.
  2. Перейдем в меню «Администрирование» — «Тестирование и исправление».
  3. Выберем только пункт «Сжатие таблиц». Это пересоберет файл базы, исключив пустые страницы.
  4. Альтернативный и самый эффективный метод: Выгрузим базу в файл .dt, создадим новую пустую информационную базу и загрузим .dt в нее. При этом файл .1CD будет сформирован заново максимально компактно.

Если ваша база работает на MSSQL, не забудьте выполнить операцию Shrink Database (Сжатие базы данных) после массового удаления данных, так как SQL-сервер также резервирует место в файлах .mdf и .ldf.

Дополнительные рекомендации

Посмотрим на такие объекты, как классификаторы (БАНКИ, ФИАС/КЛАДР). Если в базу загружены адресные сведения по всей стране, они могут занимать значительный объем. В современных версиях 1С рекомендуется использовать веб-сервис для проверки адресов, что позволяет полностью очистить таблицы классификаторов в самой базе.

Также проанализируем Журнал регистрации. При массовом удалении 150 тысяч документов журнал регистрации фиксирует каждое действие, из-за чего его файлы могут вырасти в разы. Настройте сокращение журнала регистрации через «Администрирование», чтобы удалить старые записи, или физически удалите/архивируйте папку 1Cv8Log в каталоге базы данных (предварительно завершив работу всех пользователей).

Резюмируем: чтобы реально сократить место, недостаточно просто удалить документы. Нужно очистить технические регистры, оптимизировать конфигурацию (удалить лишние макеты драйверов), очистить индексы полнотекстового поиска и обязательно выполнить пересоздание базы через выгрузку/загрузку .dt или процедуру сжатия.

← На главную