Jak wspomniał Kaboing, MAXDOP(n)
faktycznie kontroluje liczbę rdzeni procesora używanych w procesorze zapytań.
W całkowicie bezczynnym systemie SQL Server będzie próbował jak najszybciej ściągnąć tabele do pamięci i połączyć je w pamięci. Możliwe, że w twoim przypadku najlepiej zrobić to za pomocą jednego procesora. Może to mieć taki sam efekt, jak użycie OPTION (FORCE ORDER)
co zmusza optymalizator zapytań do użycia określonej kolejności złączeń. W niektórych przypadkach widziałem OPTION (FORCE PLAN)
skróć zapytanie z 26 sekund do 1 sekundy czasu wykonania.
Books Online mówi dalej, że możliwe wartości dla MAXDOP
są:
0 — używa rzeczywistej liczby dostępnych procesorów w zależności od bieżącego obciążenia systemu. To jest wartość domyślna i zalecane ustawienie.
1 — Pomija równoległe generowanie planu. Operacja zostanie wykonana seryjnie.
2-64 — Ogranicza liczbę procesorów do określonej wartości. W zależności od bieżącego obciążenia może być używanych mniej procesorów. Jeśli podana jest wartość większa niż liczba dostępnych procesorów, używana jest rzeczywista liczba dostępnych procesorów.
Nie jestem pewien, jakie jest najlepsze zastosowanie MAXDOP
jest jednak zgadywałbym i powiedziałbym, że jeśli masz tabelę z 8 partycjami na niej, chciałbyś określić MAXDOP(8)
ze względu na ograniczenia we/wy, ale mogę się mylić.
Oto kilka szybkich linków, które znalazłem na temat MAXDOP
:
Książki online:stopień równoległości
Ogólne wskazówki dotyczące konfiguracji opcji MAXDOP