2016-07-17 2 views
2

Моя текущая база данных - SQL Server 2008 и будет обновляться до SQL Server 2014. Я не могу подтвердить, поддерживает ли SQL Server 2014 хэш-разделы. У меня есть одна таблица, которая имеет около 29M записей. Эта таблица растет очень быстро. В прошлом году он удваивается каждые 3-4 месяца. Я хотел бы горизонтально разделить мою таблицу на основе идентификатора клиента. Я ищу в Интернете и не могу подтвердить, что они его поддерживают.Поддерживает ли SQL Server хэш-разбиение?

ответ

1

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

+0

Вы также должны использовать постоянный вычисленный столбец как значение хэша. –

+0

Да; Я не был ясно, что результат хеширования должен храниться как столбец в таблице (будь то через вычисляемый столбец или менее экзотический метод «вычислять и обновлять»). –

1

Нет, SQL Server не поддерживает хэш-разбиение. Как говорит Бен, вы можете катиться самостоятельно, используя функцию хэширования и постоянный вычисленный столбец. Сценарий только, когда это рекомендуется, - это когда конфликты защелки на последней странице замедляются вставками, а в другой раз. Прочтите Hash Partitioning, SQL Server, and Scaling Writes для более подробной информации.

Этот стол растет очень быстро. В прошлом году он удваивается каждые 3-4 месяца.

Итак, что же это нужно делать с хэш-разметки, или с любой секционирования? Разделение не дает никаких преимуществ в производительности, целью управления хранилища данных. Для получения доступа к большим наборам данных рассмотрите индексы. Для аналитических рабочих нагрузок используйте колонки. Для общих проблем производительности читайте How to analyse SQL Server performance.

Kendra Little имеет достойный товар How To Decide if You Should Use Table Partitioning.

+0

В чем заключается ваше утверждение, что это не так? –

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