some image

Принудительное уменьшение объема файла данных 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. Как следует из названия, эта опция делает индекс доступным в процессе переиндексации.

Related Posts