Как получить новый размер базы данных после отложенных операций удаления? - PullRequest
2 голосов
/ 17 сентября 2010

Мы использовали представление sys.database_files и функцию FILEPROPERTY , чтобы получить размер базы данных.К сожалению, как я только что нашел в документации , значения, возвращаемые sys.database_files, не всегда надежны:

Когда вы удаляете или перестраиваете большие индексы, или отбрасываете или усекаетеПри работе с большими таблицами компонент Database Engine откладывает фактические освобождения страниц и связанные с ними блокировки до момента фиксации транзакции.Отложенные операции удаления не освобождают выделенное пространство немедленно.Поэтому значения, возвращаемые sys.database_files сразу после удаления или усечения большого объекта, могут не отражать фактическое доступное дисковое пространство .Для получения дополнительной информации об отложенных распределениях см. Удаление и восстановление больших объектов.

Итак, если большая таблица только что была отброшена, тогда когда я могу надежно запросить представление sys.database_files?Как долго мне ждать?

1 Ответ

2 голосов
/ 17 сентября 2010

Вы можете использовать sys.allocation_units DMV.

Пока отложенное отбрасывание находится в ожидании, единица распределения все равно будет отображать со значением 0 в столбце type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...