Som Kaboing nævnte, MAXDOP(n)
kontrollerer faktisk antallet af CPU-kerner, der bruges i forespørgselsprocessoren.
På et fuldstændig inaktivt system vil SQL Server forsøge at trække tabellerne ind i hukommelsen så hurtigt som muligt og forbinde dem i hukommelsen. Det kan være, at det i dit tilfælde er bedst at gøre dette med en enkelt CPU. Dette kan have samme effekt som at bruge OPTION (FORCE ORDER)
hvilket tvinger forespørgselsoptimeringsværktøjet til at bruge rækkefølgen af joinforbindelser, som du har angivet. I nogle tilfælde har jeg set OPTION (FORCE PLAN)
reducere en forespørgsel fra 26 sekunder til 1 sekund af eksekveringstid.
Books Online fortsætter med at sige, at mulige værdier for MAXDOP
er:
0 - Bruger det faktiske antal tilgængelige CPU'er afhængigt af den aktuelle systembelastning. Dette er standardværdien og den anbefalede indstilling.
1 - Undertrykker generering af parallel plan. Handlingen udføres serielt.
2-64 - Begrænser antallet af processorer til den angivne værdi. Færre processorer kan bruges afhængigt af den aktuelle arbejdsbyrde. Hvis der er angivet en værdi større end antallet af tilgængelige CPU'er, bruges det faktiske antal tilgængelige CPU'er.
Jeg er ikke sikker på, hvad den bedste brug af MAXDOP
er er, men jeg vil tage et gæt og sige, at hvis du har en tabel med 8 partitioner på den, vil du gerne specificere MAXDOP(8)
på grund af I/O-begrænsninger, men jeg kan tage fejl.
Her er et par hurtige links, jeg fandt om MAXDOP
:
Bøger online:Grad af parallelisme
Generelle retningslinjer til brug for at konfigurere MAXDOP-indstillingen