Можно ли разделить одну таблицу БД SQL 2008 на несколько файловых групп на основе столбца дискриминатора? - PullRequest
2 голосов
/ 13 января 2011

У меня есть база данных SQL Server 2008 R2, в которой есть несколько таблиц.Две из этих таблиц содержат много больших данных .. в основном потому, что одна из них - VARBINARY(MAX), а сестринская таблица - GEOGRAPHY.(Почему две таблицы? Читайте ниже, если вам интересно ***)

Данные в этих таблицах представляют собой геопространственные формы, такие как границы почтового индекса.

Теперь первые нечетные строки размером 70 КБдля DataType = 1 остальные 5 млн строк предназначены для DataType = 2

Теперь можно ли разбить данные таблицы на два файла?поэтому все строки для DataType != 2 переходят в File_A, а DataType = 2 переходят в File_B?

Таким образом, когда я делаю резервную копию БД, я могу пропустить добавление File_B, поэтому моя загрузка становится меньше?Возможно ли это?


Полагаю, вы могли подумать -> а почему бы не оставить их в качестве ДВУХ дополнительных столов?Главным образом потому, что в коде данные концептуально одинаковы ... просто случается, что я хочу разделить хранилище данных этой модели.Моя модель действительно испортила бы, если бы я теперь использовал два агрегата в моей модели вместо одного.

*** Entity Framework не любит таблицы с GEOGRAPHY, поэтому мне нужно создать новую таблицу, котораяпреобразует GEOGRAPHY в VARBINARY, а затем отбрасывает его в EF.

Ответы [ 2 ]

3 голосов
/ 13 января 2011

Это немного излишне, но вы можете использовать для этого разбиение таблиц, поскольку каждый раздел может быть сопоставлен с отдельной файловой группой.Некоторые предостережения:

  • Секционирование таблиц доступно только в редакции Enterprise (и для разработчиков)
  • Как и в случае кластеризованных индексов, вы получаете только один, поэтому убедитесь, что вы хотите именно этого.разделить ваши столы
  • Я не уверен, насколько хорошо это сыграет против «выборочных резервных копий» или, что еще важнее, частичного восстановления.Вы бы хотели протестировать множество сценариев восстановления странных событий перед тем, как перейти в Production с этим

Более старым способом сделать это было бы установить многораздельные представления.Это дает вам две таблицы, правда, но «структура» секционированного представления довольно солидна и довольно элегантна, и вам не придется беспокоиться о том, что ваши данные распределены по нескольким файлам резервных копий.

0 голосов
/ 13 января 2011

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

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

...