Som Kaboing nämnde, MAXDOP(n)
kontrollerar faktiskt antalet CPU-kärnor som används i frågeprocessorn.
På ett helt inaktivt system kommer SQL Server att försöka dra in tabellerna i minnet så snabbt som möjligt och sammanfoga dem i minnet. Det kan vara så att det i ditt fall är bäst att göra detta med en enda CPU. Detta kan ha samma effekt som att använda OPTION (FORCE ORDER)
vilket tvingar frågeoptimeraren att använda den ordning på kopplingar som du har angett. I vissa fall har jag sett OPTION (FORCE PLAN)
minska en fråga från 26 sekunder till 1 sekunds körningstid.
Books Online fortsätter med att säga att möjliga värden för MAXDOP
är:
0 - Använder det faktiska antalet tillgängliga processorer beroende på den aktuella systemets arbetsbelastning. Detta är standardvärdet och den rekommenderade inställningen.
1 - Undertrycker generering av parallella planer. Operationen kommer att utföras i serie.
2-64 - Begränsar antalet processorer till det angivna värdet. Färre processorer kan användas beroende på den aktuella arbetsbelastningen. Om ett värde som är större än antalet tillgängliga processorer anges, används det faktiska antalet tillgängliga processorer.
Jag är inte säker på vad den bästa användningen av MAXDOP
är är, men jag skulle ta en gissning och säga att om du har en tabell med 8 partitioner på den, skulle du vilja specificera MAXDOP(8)
på grund av I/O-begränsningar, men jag kan ha fel.
Här är några snabblänkar jag hittade om MAXDOP
:
Böcker online:Grad av parallellism
Allmänna riktlinjer att använda för att konfigurera MAXDOP-alternativet