Dela via


Konfigurera parallella indexåtgärder

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Förhandsversion av Microsoft Fabric

Den här artikeln definierar maximal grad av parallellitet och förklarar hur du ändrar den här inställningen i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.

I system med flera processorer som kör SQL Server Enterprise eller senare kan indexinstruktioner använda flera processorer (PROCESSORer) för att utföra genomsöknings-, sorterings- och indexåtgärder som är associerade med indexinstruktionen precis som andra frågor. Antalet processorer som används för att köra en enda index-instruktion bestäms av alternativet för serverkonfiguration med maximal grad av parallellitet , aktuell arbetsbelastning och indexstatistik.

Alternativet maximal grad av parallellitet avgör det maximala antalet processorer som ska användas vid parallell plankörning. Om SQL Server Database Engine upptäcker att systemet är upptaget minskas indexåtgärdens parallellitet automatiskt innan instruktionskörningen startar. Databasmotorn kan också minska graden av parallellitet om den inledande nyckelkolumnen i ett icke-partitionerat index har ett begränsat antal distinkta värden eller om frekvensen för varje distinkt värde varierar avsevärt. Mer information finns i Arkitekturguide för frågebearbetning.

Note

Parallella indexåtgärder är inte tillgängliga i varje SQL Server-utgåva. Mer information finns i -utgåvor och funktioner som stöds i SQL Server 2022.

Begränsningar

  • Antalet processorer som används av frågeoptimeraren ger vanligtvis optimala prestanda. Åtgärder som att skapa, återskapa eller ta bort mycket stora index är dock resursintensiva och kan orsaka otillräckliga resurser för andra program och databasåtgärder under indexåtgärdens varaktighet.

    När det här problemet uppstår kan du manuellt konfigurera det maximala antalet processorer som används för att köra indexsatsen genom att begränsa antalet processorer som ska användas för indexåtgärden.

  • Indexalternativet MAXDOP åsidosätter endast konfigurationsalternativet för maximal grad av parallellitet för frågan som anger det här alternativet. I följande tabell visas giltiga heltalsvärden som kan anges med konfigurationsalternativet maximal grad av parallellitet och indexalternativet MAXDOP .

    Value Description
    0 Anger att servern avgör antalet processorer som används, beroende på den aktuella systemarbetsbelastningen. Det här är standardvärdet och den rekommenderade inställningen.
    1 Undertrycker parallell plangenerering. Åtgärden körs seriellt.
    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.
  • Parallell indexkörning och indexalternativet MAXDOP gäller för följande Transact-SQL-instruktioner:

  • Indexalternativet MAXDOP kan inte anges i -instruktionen ALTER INDEX (...) REORGANIZE .

  • Minneskraven för partitionerade indexåtgärder som kräver sortering kan vara större om Frågeoptimeraren tillämpar parallellitetsgrader på byggåtgärden. Ju högre grad av parallellitet, desto större är minnesbehovet. Mer information finns i Partitionerade tabeller och index.

Permissions

Kräver ALTER behörighet i tabellen eller vyn.

Använda SQL Server Management Studio

Ange maximal grad av parallellitet för ett index

  1. I Object Explorer väljer du plustecknet för att expandera databasen som innehåller den tabell där du vill ange maximal grad av parallellitet för ett index.

  2. Öppna och expandera mappen Tables.

  3. Välj plustecknet för att expandera tabellen där du vill ange maximal grad av parallellitet för ett index.

  4. Expandera mappen Index.

  5. Högerklicka på det index som du vill ange maximal grad av parallellitet för och välj Egenskaper.

  6. Under Välj en sida, välj Alternativ.

  7. Välj Maximal grad av parallellitet och ange sedan ett värde mellan 1 och 64.

  8. Välj OK.

Använd Transact-SQL

Ange maximal grad av parallellitet för ett befintligt index

  1. I Object Exploreransluter du till en instans av databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och välj Kör. Den här koden ändrar indexet IX_ProductVendor_VendorID i Purchasing.ProductVendor tabellen så att databasmotorn begränsar körningen av indexåtgärden till åtta eller färre processorer om servern har åtta eller fler processorer.

    USE AdventureWorks2022;
    GO
    
    ALTER INDEX IX_ProductVendor_VendorID
        ON Purchasing.ProductVendor REBUILD WITH(MAXDOP = 8);
    GO
    

Mer information finns i ALTER INDEX.

Ange maximal grad av parallellitet när du skapar ett nytt index

  1. I Object Exploreransluter du till en instans av databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och välj Kör.

    USE AdventureWorks2022;
    GO
    
    CREATE INDEX IX_ProductVendor_NewVendorID
        ON Purchasing.ProductVendor(BusinessEntityID) WITH (MAXDOP = 8);
    GO