Почему не уменьшается размер базы данных 1С после переноса файлов в тома и как это исправить?

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

Многие администраторы 1С сталкиваются с ситуацией, когда после переноса большого количества файлов из базы данных во внешние тома на диске, физический размер файла .mdf в MS SQL Server остается прежним. Давайте разберем, почему это происходит и как правильно освободить дисковое пространство, не навредив производительности системы.

Почему удаление файлов не уменьшает размер базы данных?

Важно понимать: когда вы переносите файлы в тома, данные удаляются из таблиц 1С, но MS SQL Server не возвращает освободившееся место операционной системе автоматически. СУБД помечает страницы данных как свободные внутри своего файла .mdf, чтобы в будущем записывать туда новую информацию без расширения файла. Это сделано для повышения производительности, так как частое расширение и сжатие файлов вызывает серьезные нагрузки на дисковую подсистему. Для детального анализа того, какие именно объекты занимают место внутри информационной базы, можно использовать инструмент для построения карты объемов базы 1С.

Пошаговый алгоритм очистки пространства

Чтобы привести размер базы к реальному значению, выполним следующие действия. Важно: все работы проводите сначала на тестовой копии базы!

  1. Проверка заполненности данных: Убедитесь, что в системе не осталось «мусора». Проверьте справочники и регистры, такие как Справочник.СообщенияИнтегрированныхСистем или регистр сведений ДвоичныеДанныеФайлов. Часто проблема кроется в объектах, которые не относятся напрямую к файлам, но занимают много места.
  2. Анализ «тяжелых» таблиц: Используйте стандартные отчеты MS SQL Server Management Studio. Нажмите правой кнопкой на базу данных — Отчеты — Стандартные отчеты — Disk Usage by Top Tables. Это покажет, какие таблицы съедают основной объем. Если это таблицы с префиксами Data или Blob, значит, данные еще не вычищены.
  3. Реструктуризация и дефрагментация: Перед сжатием базы данных необходимо выполнить обслуживание индексов. Сильная фрагментация мешает корректной работе процесса Shrink. Выполните Реструктуризацию таблиц через Тестирование и исправление в конфигураторе 1С.
  4. Настройка модели восстановления: Для очистки логов транзакций и подготовки к сжатию временно переведите базу в модель восстановления Simple (Простая). Это делается в свойствах базы в SQL Server Management Studio.
  5. Сжатие (Shrink): Только после выполнения всех подготовительных этапов можно запускать процедуру сжатия:
    
    USE [ВашаБаза];
    GO
    DBCC SHRINKDATABASE (N'ВашаБаза', 10);
    GO
    
    После завершения операции обязательно верните исходную модель восстановления (обычно Full) и сделайте полный бэкап.

Чего делать не стоит

Не выполняйте Shrink базы данных на регулярной основе. Эта операция вызывает дефрагментацию индексов, что приводит к резкому падению производительности 1С в первые часы и дни после выполнения. Используйте сжатие только как разовую процедуру после глобальной очистки или переноса данных.

Если после всех процедур размер базы все еще кажется завышенным, рассмотрите вариант создания новой базы и выгрузки/загрузки данных через .dt файл. При такой процедуре MS SQL Server создаст новую структуру файлов «с нуля», что гарантированно устранит все пустые области внутри файла данных.

Помните: наличие актуального резервного бэкапа перед началом любых манипуляций с моделью восстановления и структурой файлов базы данных является обязательным условием безопасности ваших данных!

← На главную