Jak Kaboing zmínil, MAXDOP(n)
ve skutečnosti řídí počet jader CPU, která jsou používána v dotazovacím procesoru.
Na zcela nečinném systému se SQL Server pokusí co nejrychleji stáhnout tabulky do paměti a spojit je v paměti. Je možné, že ve vašem případě je nejlepší to udělat s jedním CPU. To může mít stejný účinek jako použití OPTION (FORCE ORDER)
což přinutí optimalizátor dotazů použít pořadí spojení, které jste zadali. V některých případech jsem viděl OPTION (FORCE PLAN)
zkrátit dobu provádění dotazu z 26 sekund na 1 sekundu.
Books Online dále uvádí, že možné hodnoty pro MAXDOP
jsou:
0 – Použije skutečný počet dostupných CPU v závislosti na aktuální zátěži systému. Toto je výchozí hodnota a doporučené nastavení.
1 - Potlačí paralelní generování plánu. Operace bude provedena sériově.
2-64 - Omezuje počet procesorů na zadanou hodnotu. V závislosti na aktuální zátěži může být použito méně procesorů. Pokud je zadána hodnota větší než počet dostupných CPU, použije se skutečný počet dostupných CPU.
Nejsem si jistý, jaké je nejlepší použití MAXDOP
je, nicméně bych odhadl a řekl, že pokud máte tabulku s 8 oddíly, budete chtít zadat MAXDOP(8)
kvůli omezením I/O, ale mohu se mýlit.
Zde je několik rychlých odkazů, které jsem našel o MAXDOP
:
Knihy online:Stupeň paralelismu
Obecné pokyny pro konfiguraci možnosti MAXDOP