Назад | Перейти на главную страницу

Освобождение свободного места в файловой группе с одним хронологическим разделом

- переехал сюда из ТАК (здесь нет комментариев)

Вопрос:

каков правильный способ освобождения места в большой (сотни ГБ) файловой группе с одним разделом таблицы, который упорядочен в хронологическом порядке, не имеет фрагментации индекса и не может позволить фрагментацию индекса? Я слышал много плохого об усадке (например, http://www.brentozar.com/archive/2009/08/stop-shrinking-your-database-files-seriously-now/). Фрагментация индекса и временная сложность восстановления - моя главная проблема

Задний план:

У меня огромная таблица (несколько ТБ) со следующими свойствами:

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

Мы хотим начать разделение также на основе времени (например, раздел на квартал и размер «A»; снова каждый раздел в отдельной файловой группе). Но есть две проблемы:

Было бы неплохо иметь возможность просто вырезать свободное пространство с конца файловой группы после окончания каждого квартала, а затем, например, пометить файловую группу как доступную только для чтения

Чтобы освободить место в конце раздела:

DBCC SHRINKFILE (FileGroupFileName, TRUNCATEONLY)
GO

Для обозначения раздела только чтение:

ALTER DATABASE [DBNAME]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;

ALTER DATABASE [DBNAME] MODIFY FILEGROUP [FileGroupName] READ_ONLY;
GO

ALTER DATABASE [DBNAME]
SET MULTI_USER;
GO