Часто администраторы и разработчики сталкиваются с ситуацией, когда требуется удаление лишних организаций или когда стандартная типовая база 1С:Бухгалтерия 3.0, не имеющая огромных объемов документов, начинает «раздуваться» до десятков гигабайт. Давайте разберем, почему это происходит и какие шаги предпринять, чтобы вернуть базу к адекватным размерам без потери данных. Для предварительного поиска крупных объектов пригодится обработка обследования базы. Полные размеры серверных таблиц и индексов она показывает после отдельного выполнения SQL-запроса и загрузки его результата.
Прежде чем приступать к радикальным методам очистки, необходимо понять, что именно съедает пространство. Основными «пожирателями» места являются:
1С-Отчетность, 1С-ЭДО, устаревшие электронные письма или сканы документов, сохраненные в базе, занимают значительный объем..mdf образуется множество «пустых» страниц, которые сервер не возвращает файловой системе автоматически.Config и ConfigSafe могут накапливать «мусор» после многочисленных обновлений, что визуально увеличивает размер базы.Для начала проанализируем структуру таблиц. Мы рекомендуем использовать специальные обработки («пузомеры» или «анализаторы размера таблиц»), которые позволяют увидеть объем каждой таблицы базы данных вместе с индексами. Если вы работаете с 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;
Это самый эффективный способ «утрамбовать» данные. При выгрузке в файл .dt 1С собирает только актуальные данные, игнорируя пустые страницы и фрагментацию. Последующая загрузка в новую чистую базу создает оптимальную структуру таблиц.
SQL Server.Администрирование -> Выгрузить информационную базу.Администрирование -> Загрузить информационную базу из полученного файла .dt.После того как вы загрузили базу, необходимо выполнить обслуживание для корректной работы с файловой системой. Разберем работу с Shrink (сжатием).
Внимание: Регулярное использование Shrink приводит к сильной фрагментации индексов. Применяйте его только после масштабной очистки данных.
Для выполнения сжатия базы средствами SQL Server Management Studio:
Tasks (Задачи) -> Shrink (Сжать) -> Database (База данных).OK. Сервер освободит неиспользуемое пространство внутри файлов .mdf.Чтобы база не начала снова стремительно расти, настройте следующие параметры:
Maintenance Plan в SQL Server Agent для ежедневной перестройки индексов и обновления статистики. Это ускорит работу 1С и предотвратит некорректную работу оптимизатора запросов.Проанализировав ситуацию, мы выяснили, что даже типовые конфигурации могут занимать лишнее место из-за служебной фрагментации. Применение регулярного обслуживания базы и периодическая «пересборка» через выгрузку в .dt позволяют удерживать размер базы в разумных пределах.