SQL Server Partitioning ще увеличи ли производителността без промяна на файловите групи

Сценарий Имам таблица с 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
comment
и какво ще кажете за това Проектиране на дялове за подобряване на производителността на заявките? Разделянето е функция за производителност, но изисква специфична техника, за да напишете вашата заявка. Или греша? - person Rodion; 28.02.2014
comment
Ако имате въпроси, задайте отделен въпрос, не публикувайте като коментар. Препоръчвам dba.stackexchange.com. Благодаря. - person Remus Rusanu; 28.02.2014
comment
Моят въпрос е в съответствие с вашия отговор тук. И този отговор вече е свързан в друг отговор. - person Rodion; 28.02.2014

Първото разделяне ще ви помогне само ако използвате корпоративната версия. Вярвам, че това ще подобри производителността ви, въпреки че действителната полза, която ще получите, ще зависи от конкретното ви работно натоварване (да, винаги зависи).
Не е точно като създаването на 10 по-малки таблици, но ако вашите заявки работят срещу диапазони на вашите дялове данните в този дял ще бъдат само "докоснати". В тези случаи мисля, че подобрението на производителността ще бъде забележимо. В случаите, когато заявките преминават през диапазоните на дялове, производителността ще бъде по-лоша.
Мисля, че ще трябва да опитате кое решение отговаря най-добре на вашите данни, в някои случаи дялът ще ви помогне, а в други ще направи обратното, друга полза от разделянето е, че няма да се налага да се притеснявате да премествате данните си.

Това е добра статия за разделянето - bol

person Alan Featherston    schedule 24.04.2010