Принудительное уменьшение объема файла данных SQL server
Столкнулся с ситуацией: файл базы разросся за счет ошибки в приложении и заполнении одной из таблиц мусором. Ошибка исправлена, таблица вычищена, а файл базы не уменьшается. Это особенность mssql, при уменьшении объема данных свободное место системе не возвращается, а резервируется.
Но если хочется, есть решение — использовать release unused space фичу SQL Studio.
Не сработало? Такое бывает, не уж то вы думали, что Microsoft и правда может сделать кнопочку «сделать все хорошо»? Нет, это не их подход. Кроме этого нужно сделать rebuild индексов.
Отличие rebuild от reorganize.
Как говорит индус,
Index Rebuild: Удаляет существующий индекс и создает его по-новой.
USE AdventureWorks; GO ALTER INDEX ALL ON Production.Product REBUILD GO
Index Reorganize: Реорганизует индекс, уменьшая фрагментацию.
USE AdventureWorks; GO ALTER INDEX ALL ON Production.Product REORGANIZE GO
Рекомендации: Делать rebuild следует при фрагментации индекса более 40%, reorganize — при фрагментации от 10% до 40%. Rebuild использует больше CPU и ресурсов базы. Development и Enterprise версии SQL server имеют опцию ONLINE для rebuild. Как следует из названия, эта опция делает индекс доступным в процессе переиндексации.