У меня есть база данных SQL Server 2008 Ent и OLTP с двумя большими таблицами. Как я могу переместить это таблицы в другую группу файлов без сервисного прерывания? Теперь, приблизительно 100-130 вставленных записей и 30-50 записей, обновляемых каждую секунду в этом, представляют в виде таблицы. Каждая таблица имеет о 100M записи и шесть полей (включая одну полевую географию).
Я ищущий решение через Google, но все решения содержу, "составляют вторую таблицу, вставляют строки от первой таблицы, отбрасывают первую таблицу, bla bla bla".
Я могу использовать функции разделения для решения этой проблемы?Спасибо.
Если вы хотите просто переместить таблицу в новую файловую группу, вам нужно заново создать кластерный индекс таблицы (в конце концов: кластерный индекс это данные таблицы) в новой файловой группе, которую вы хотите.
Вы можете сделать это, например, так:
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.
Это, конечно, еще не касается партиционирования, но это уже совсем другая история...
Одно из решений - это секционирование, но вы можете «переместить» кластерный индекс в новую файловую группу без прерывания обслуживания (при некоторых условиях см. ссылку ниже) с использованием
CREATE CLUSTERED /*oops*/ INDEX ... WITH (DROP_EXISTING = ON, ONLINE = ON, ...) ON newfilegroup
Кластерный индекс - это данные, и это то же самое, что и перемещение файловой группы.
См. CREATE INDEX
Это зависит от того, кластеризован ваш первичный ключ или нет, что меняет способ его выполнения