Степен на паралелизъм, Microsoft Docs
SQL Server автоматично открива най-високата степен на паралелизъм за всеки екземпляр на паралелно изпълнение на заявка или индекс на DDL операция. Това се прави въз основа на следните критерии.
Дали SQL Server работи на компютър, който има повече от един микропроцесор или CPU (като компютър със симетричен мултипроцесор (SMP).
Само компютри с повече от един процесор могат да използват паралелни заявки.
Има ли достатъчно налични потоци.
Всяка операция на заявка или индекс изисква определен брой нишки да бъдат изпълнени. Паралелният план изисква повече нишки за изпълнение от последователния план и броят на заявените нишки се увеличава с увеличаване на степента на паралелизъм. Когато изискването за нишки на паралелен план за определена степен на паралелизъм не може да бъде изпълнено, Database Engine намалява степента на паралелизъм автоматично или напълно изоставя паралелния план в указания контекст на работно натоварване. В този случай започва изпълнението на последователния план (единична нишка).
Типът на извършваната заявка или операция с индекс.
Индексните операции, които създават или възстановяват индекс или премахват клъстерен индекс и интензивни заявки за цикъл на процесора, са най-добрите кандидати за паралелен план. Например големите обединения на таблици, големите агрегати и сортирането на големи набори от резултати са добри кандидати. Простите заявки, често срещани в приложенията за обработка на транзакции, намират допълнителната координация, необходима за паралелно изпълнение на заявката, надвишаваща потенциалното увеличение на производителността. Да сеЗа да разграничи заявките, които се възползват от паралелизма, и заявките, които не го правят, Database Engine сравнява прогнозната цена на заявката или операцията на индекса, която трябва да бъде извършена, спрямо прага на разходите за паралелизъм. Въпреки че не се препоръчва, потребителите могат да променят стойността по подразбиране от 5 с помощта на sp_configure.
Дали броят на редовете за обработка е достатъчен.
Ако оптимизаторът на заявки определи, че броят на редовете е твърде малък, тогава той не вмъква оператори за конвертиране на валута, за да разпространява редове. Следователно отчетите се обработват последователно. Обработката на отчети в последователен план избягва сценарии, при които разходите за стартиране, разпространение и координиране надхвърлят ползите, постигнати чрез паралелна обработка на отчет.
Дали са налични статистически данни за разпространението.
Ако най-високата степен на едновременност не е възможна, се разглеждат по-ниски степени, преди паралелният план да бъде отхвърлен.
Например статистическите данни за разпространението не могат да бъдат изчислени при създаване на клъстериран индекс в изглед, тъй като клъстерираният индекс все още не съществува. В този случай Database Engine не може да осигури най-високата степен на паралелизъм за операцията с индекса. Въпреки това, някои оператори, като например сортиране и сканиране, все още могат да се възползват от паралелната обработка.