Почему база 1С:Бухгалтерия 3.0 занимает слишком много места на сервере и как это исправить?

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

Часто администраторы и разработчики сталкиваются с ситуацией, когда требуется удаление лишних организаций или когда стандартная типовая база 1С:Бухгалтерия 3.0, не имеющая огромных объемов документов, начинает «раздуваться» до десятков гигабайт. Давайте разберем, почему это происходит и какие шаги предпринять, чтобы вернуть базу к адекватным размерам без потери данных. Для предварительного поиска крупных объектов пригодится обработка обследования базы. Полные размеры серверных таблиц и индексов она показывает после отдельного выполнения SQL-запроса и загрузки его результата.

Этап 1: Анализ причин раздувания базы

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

  1. Версионирование объектов: Если в настройках 1С включено ведение истории изменений, база может быстро расти, так как каждая версия документа сохраняется целиком.
  2. Прикрепленные файлы: Вложения в 1С-Отчетность, 1С-ЭДО, устаревшие электронные письма или сканы документов, сохраненные в базе, занимают значительный объем.
  3. Фрагментация страниц: В SQL Server данные хранятся на страницах. При интенсивном удалении и добавлении записей внутри файлов базы .mdf образуется множество «пустых» страниц, которые сервер не возвращает файловой системе автоматически.
  4. Системные таблицы конфигурации: Таблицы Config и ConfigSafe могут накапливать «мусор» после многочисленных обновлений, что визуально увеличивает размер базы.
  5. Неочищенные регистры: Планы обмена, статистика и логи могут разрастаться, если регламентные задания по их очистке не настроены или работают некорректно.

Этап 2: Диагностика и анализ структуры хранения

Для начала проанализируем структуру таблиц. Мы рекомендуем использовать специальные обработки («пузомеры» или «анализаторы размера таблиц»), которые позволяют увидеть объем каждой таблицы базы данных вместе с индексами. Если вы работаете с MS SQL Server, воспользуйтесь системными представлениями для получения отчета о занимаемом месте:


SELECT 
    t.Name AS TableName, 
    s.Name AS SchemaName, 
    p.rows AS RowCounts, 
    SUM(a.total_pages) * 8 AS TotalSpaceKB
FROM sys.tables t
INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
GROUP BY t.Name, s.Name, p.rows
ORDER BY TotalSpaceKB DESC;

Этап 3: Метод выгрузки и загрузки через файл .dt

Это самый эффективный способ «утрамбовать» данные. При выгрузке в файл .dt 1С собирает только актуальные данные, игнорируя пустые страницы и фрагментацию. Последующая загрузка в новую чистую базу создает оптимальную структуру таблиц.

  1. Создайте резервную копию базы данных средствами SQL Server.
  2. Через Конфигуратор выполните операцию Администрирование -> Выгрузить информационную базу.
  3. Создайте новую пустую базу на SQL-сервере.
  4. Выполните Администрирование -> Загрузить информационную базу из полученного файла .dt.

Этап 4: Обслуживание базы на стороне SQL Server

После того как вы загрузили базу, необходимо выполнить обслуживание для корректной работы с файловой системой. Разберем работу с Shrink (сжатием).

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

Для выполнения сжатия базы средствами SQL Server Management Studio:

  1. Нажмите правой кнопкой на имя базы -> Tasks (Задачи) -> Shrink (Сжать) -> Database (База данных).
  2. В появившемся окне нажмите OK. Сервер освободит неиспользуемое пространство внутри файлов .mdf.

Этап 5: Профилактика роста базы

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

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

← На главную