Повысит ли секционирование SQL Server производительность без изменения файловых групп

Сценарий у меня есть таблица с 10 миллионами строк. Я разбиваю его на 10 разделов, в результате получается 1 миллион строк на раздел, но я больше ничего не делаю (например, перемещаю разделы в разные файловые группы или шпиндели)

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

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

Было бы лучше переместить старые данные (с помощью переключения разделов) из основной таблицы в архивную таблицу только для чтения?

Является ли таблица с разделом на 1 миллион строк и разделом на 9 миллионов строк аналогичным (с точки зрения производительности) перемещению 9 миллионов строк в другую таблицу и оставлению только 1 миллиона строк в исходной таблице?


person Tom DeMille    schedule 23.04.2010    source источник


Ответы (2)


Разделение не является функцией производительности, оно предназначено для операций обслуживания, таких как перемещение данных между таблицами и очень быстрое удаление данных. Разделение таблицы из 10 млн строк на 10 секций по 1 млн строк в каждой не только не увеличит производительность большинства запросов, но и, скорее всего, сделает некоторые из них медленнее.

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

person Remus Rusanu    schedule 24.04.2010

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

Это хорошая статья о разделении - bol

person Alan Featherston    schedule 24.04.2010