Будет ли разделение SQL Server повысить производительность без изменения файловых групп - PullRequest
3 голосов
/ 23 апреля 2010

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 24 апреля 2010

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

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

0 голосов
/ 24 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...