2010-07-26 4 views
0

У меня есть огромная база данных, в которой есть несколько таблиц, содержащих несколько миллионов записей. Он держит инженерные данные для клиента и постоянно растет. Это влияет на производительность даже при оптимизированной индексации. Поэтому я смотрю на раздел.SQL Server 2008 Table Partitioning

Однако я бы посмотрел на разбиение на версию, хранящуюся в таблице. В это наиболее упрощенной форме таблица состоит из: -

VersionID int
SheetID int
CreationDate datetime
SomeDate nvarchar(255)
Version int

И эти данные будут выглядеть примерно так: -

1, 1, 2010-09-01, blah, 1
2, 1, 2010-09-02, more blah, 2
3, 1, 2010-09-04, blah, 3
4, 2, 2010-09-02, more blah, 1

Для каждого нового изменения в «лист» в системе , в этой таблице добавлена ​​новая запись с новой версией. В идеале я хочу разбить таблицу так, чтобы у меня были лучшие 2 версии для каждого «листа». Поэтому из таблицы выше мне нужны версии 2 & 3 для листа id 2 и версия 1 для id листа 2, а остальные перемещаются в раздел. Из того, что я читал, это не представляется возможным. Я прав или неправ?

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

NB Я не самый активный разработчик SQL, поэтому извиняюсь, если это абсолютно глупый вопрос!

ответ

0

Для количества «нескольких миллионов записей» - разбиение будет излишним - я подозреваю, что вам лучше будет смотреть планы запросов на невыполненные запросы и просматривать индексы, которые их удовлетворяют.

Целью разделения является предоставление способа старения устаревших данных без крупномасштабных удалений, устранение разделов как усиление производительности является побочным продуктом и все еще может превосходить подходящий кластерный индекс - в зависимости от размера индекса/таблица размер.

Вы можете сделать разбиение на разделы в SQL, но для реализации такого окна перемещения переменных достаточно много накладных расходов, если я правильно буду судить о требованиях.

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

+0

hmmm ... не имеет никакого значения, что это параметрическая база данных со ссылками по ок. 30 таблиц? Похоже, мне нужно снова просмотреть индексы. благодаря – grimorde

Смежные вопросы