sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är syftet med att använda OPTION(MAXDOP 1) i SQL Server?

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



  1. Trimningstid från datetime – en uppföljning

  2. (engelska) Hur man använder Oracle Database 19c Pre-Built Developer VM

  3. Exportera SQL-frågedata till Excel

  4. MySQL InnoDB Cluster 8.0 - En komplett operationsgenomgång:Del två