Как я могу переместить таблицу в другую группу файлов?

У меня есть база данных SQL Server 2008 Ent и OLTP с двумя большими таблицами. Как я могу переместить это таблицы в другую группу файлов без сервисного прерывания? Теперь, приблизительно 100-130 вставленных записей и 30-50 записей, обновляемых каждую секунду в этом, представляют в виде таблицы. Каждая таблица имеет о 100M записи и шесть полей (включая одну полевую географию).

Я ищущий решение через Google, но все решения содержу, "составляют вторую таблицу, вставляют строки от первой таблицы, отбрасывают первую таблицу, bla bla bla".

Я могу использовать функции разделения для решения этой проблемы?Спасибо.

59
задан gbn 14 March 2010 в 09:37
поделиться

2 ответа

Если вы хотите просто переместить таблицу в новую файловую группу, вам нужно заново создать кластерный индекс таблицы (в конце концов: кластерный индекс это данные таблицы) в новой файловой группе, которую вы хотите.

Вы можете сделать это, например, так:

CREATE CLUSTERED INDEX CIX_YourTable
   ON dbo.YourTable(YourClusteringKeyFields)
   WITH DROP_EXISTING
   ON [filegroup_name]

или, если ваш кластеризованный индекс уникален:

CREATE UNIQUE CLUSTERED INDEX CIX_YourTable
   ON dbo.YourTable(YourClusteringKeyFields)
   WITH DROP_EXISTING
   ON [filegroup_name]

Это создаст новый кластеризованный индекс и удалит существующий, и создаст новый кластеризованный индекс в указанной вами файловой группе - и вуаля, данные вашей таблицы перемещены в новую файловую группу.

Подробности обо всех доступных опциях, которые вы можете указать, смотрите в документации MSDN по CREATE INDEX.

Это, конечно, еще не касается партиционирования, но это уже совсем другая история...

76
ответ дан 24 November 2019 в 18:20
поделиться

Одно из решений - это секционирование, но вы можете «переместить» кластерный индекс в новую файловую группу без прерывания обслуживания (при некоторых условиях см. ссылку ниже) с использованием

CREATE CLUSTERED /*oops*/ INDEX ... WITH (DROP_EXISTING = ON, ONLINE = ON, ...) ON newfilegroup

Кластерный индекс - это данные, и это то же самое, что и перемещение файловой группы.

См. CREATE INDEX

Это зависит от того, кластеризован ваш первичный ключ или нет, что меняет способ его выполнения

7
ответ дан 24 November 2019 в 18:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: