sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er formålet med at bruge OPTION(MAXDOP 1) i SQL Server?

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



  1. Hvad er use cases for at vælge CHAR frem for VARCHAR i SQL?

  2. 3 måder at returnere alle tabeller UDEN en primær nøgle i SQL Server

  3. MySQL dump efter forespørgsel

  4. Brug af Microsoft DiskSpd til at teste dit lagerundersystem