Udostępnij za pośrednictwem


Konfigurowanie operacji indeksu równoległego

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database w Microsoft Fabric

W tym temacie zdefiniowano maksymalny stopień równoległości i wyjaśniono, jak zmodyfikować to ustawienie w programie SQL Server przy użyciu programu SQL Server Management Studio lub języka Transact-SQL.

W systemach wieloprocesorowych z uruchomionym programem SQL Server Enterprise lub nowszym instrukcje indeksu mogą używać wielu procesorów (PROCESORów) do wykonywania operacji skanowania, sortowania i indeksowania skojarzonych z instrukcją indeksu, podobnie jak w przypadku innych zapytań. Liczba procesorów CPU używanych do wykonania pojedynczego polecenia indeksowania jest określana przez opcję konfiguracji serwera maksymalny stopień równoległości, bieżące obciążenie oraz statystyki indeksów. Opcja maksymalnego stopnia równoległości określa maksymalną liczbę procesorów do użycia w ramach równoległego wykonywania planu. Jeśli aparat bazy danych programu SQL Server wykryje, że system jest zajęty, stopień równoległości operacji indeksowania zostanie automatycznie zmniejszony przed rozpoczęciem wykonywania instrukcji. Silnik bazy danych może również zmniejszyć stopień równoległości, jeśli wiodąca kolumna klucza indeksu niepodzielonego ma ograniczoną liczbę unikalnych wartości lub jeśli częstotliwość każdej unikalnej wartości znacznie się różni. Aby uzyskać więcej informacji, zobacz Przewodnik po architekturze przetwarzania zapytań.

Notatka

Operacje indeksowania równoległego nie są dostępne w każdej wersji programu SQL Server. Aby uzyskać więcej informacji, zobacz Edycje i obsługiwane funkcje SQL Server 2022.

w tym temacie

Przed rozpoczęciem

Ograniczenia i ograniczenia

  • Liczba procesorów używanych przez optymalizator zapytań zwykle zapewnia optymalną wydajność. Jednak operacje, takie jak tworzenie, ponowne kompilowanie lub upuszczanie bardzo dużych indeksów, intensywnie korzystają z zasobów i mogą powodować niewystarczającą ilość zasobów dla innych aplikacji i operacji bazy danych na czas trwania operacji indeksowania. W przypadku wystąpienia tego problemu można ręcznie skonfigurować maksymalną liczbę procesorów używanych do uruchamiania instrukcji indeksu, ograniczając liczbę procesorów do użycia dla operacji indeksowania.

  • Opcja indeksu MAXDOP zastępuje maksymalną opcję konfiguracji równoległości tylko dla zapytania określającego tę opcję. W poniższej tabeli wymieniono prawidłowe wartości całkowite, które można określić przy użyciu opcji konfiguracji maksymalnego stopnia równoległości i opcji indeksu MAXDOP.

    Wartość Opis
    0 Określa, że serwer określa liczbę używanych procesorów CPU, w zależności od bieżącego obciążenia systemu. Jest to wartość domyślna i zalecane ustawienie.
    1 Zatrzymuje generowanie planu równoległego. Operacja zostanie wykonana szeregowo.
    2-64 Ogranicza liczbę procesorów do określonej wartości. W zależności od bieżącego obciążenia może być używana mniejsza liczba procesorów. Jeśli zostanie określona wartość większa niż liczba dostępnych procesorów CPU, zostanie użyta rzeczywista liczba dostępnych procesorów CPU.
  • Równoległe wykonywanie indeksu i opcja indeksu MAXDOP mają zastosowanie do następujących instrukcji Transact-SQL:

  • Nie można określić opcji indeksu MAXDOP w instrukcji ALTER INDEX (...) REORGANIZE.

  • Wymagania dotyczące pamięci dla operacji indeksu partycjonowanego, które wymagają sortowania, mogą być większe, jeśli optymalizator zapytań stosuje stopnie równoległości do operacji kompilacji. Im wyższy stopień równoległości, tym większe jest wymaganie pamięci. Aby uzyskać więcej informacji, zobacz Partycjonowane tabele i indeksy.

uprawnienia

Wymagane jest uprawnienie ALTER do tabeli lub widoku.

Korzystanie z programu SQL Server Management Studio

Aby ustawić maksymalny stopień równoległości w indeksie

  1. W Eksploratorze obiektów kliknij znak plus, aby rozwinąć bazę danych zawierającą tabelę, w której chcesz ustawić maksymalny stopień równoległości dla indeksu.

  2. Rozwiń folder Tables.

  3. Kliknij znak plusa, aby rozwinąć tabelę, w której chcesz ustawić maksymalny stopień równoległości dla indeksu.

  4. Rozwiń folder Indeksy .

  5. Kliknij prawym przyciskiem myszy indeks, dla którego chcesz ustawić maksymalny stopień równoległości, a następnie wybierz pozycję właściwości .

  6. W obszarze Wybierz stronę, wybierz Opcje.

  7. Wybierz maksymalny stopień równoległości, a następnie wprowadź pewną wartość z zakresu od 1 do 64.

  8. Kliknij przycisk OK.

Korzystanie z Transact-SQL

Aby ustawić maksymalny stopień równoległości dla istniejącego indeksu

  1. W Eksploratorze obiektów , nawiąż połączenie z wystąpieniem silnika bazy danych.

  2. Na pasku Standardowym kliknij pozycję Nowe zapytanie.

  3. Skopiuj i wklej poniższy przykład w oknie zapytania, a następnie kliknij pozycję Wykonaj.

    USE AdventureWorks2022;   
    GO  
    /*Alters the IX_ProductVendor_VendorID index on the Purchasing.ProductVendor table so that, if the server has eight or more processors, the Database Engine will limit the execution of the index operation to eight or fewer processors.  
    */  
    ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor  
    REBUILD WITH (MAXDOP=8);   
    GO  
    

Aby uzyskać więcej informacji, zobacz ALTER INDEX (Transact-SQL).

Określanie maksymalnego stopnia równoległości podczas tworzenia nowego indeksu

  1. W Eksploratorze obiektów , nawiąż połączenie z wystąpieniem Silnika bazy danych.

  2. Na pasku standardowym kliknij pozycję Nowe zapytanie.

  3. Skopiuj i wklej poniższy przykład w oknie zapytania, a następnie kliknij pozycję Wykonaj.

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

Zobacz też

Przewodnik po architekturze przetwarzania zapytań
CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL)
DROP INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)
ALTER TABLE table_constraint (Transact-SQL)
ALTER TABLE index_option (Transact-SQL)