Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quel est le but de l'utilisation de OPTION(MAXDOP 1) dans SQL Server ?

Comme Kaboing l'a mentionné, MAXDOP(n) contrôle en fait le nombre de cœurs de processeur utilisés dans le processeur de requêtes.

Sur un système complètement inactif, SQL Server tentera d'extraire les tables en mémoire aussi rapidement que possible et de les joindre en mémoire. Il se peut que, dans votre cas, il soit préférable de le faire avec un seul processeur. Cela peut avoir le même effet que l'utilisation de OPTION (FORCE ORDER) qui force l'optimiseur de requête à utiliser l'ordre des jointures que vous avez spécifié. DANS certains cas, j'ai vu OPTION (FORCE PLAN) réduire une requête de 26 secondes à 1 seconde de temps d'exécution.

Books Online poursuit en disant que les valeurs possibles pour MAXDOP sont :

0 - Utilise le nombre réel de processeurs disponibles en fonction de la charge de travail actuelle du système. Il s'agit de la valeur par défaut et du paramètre recommandé.

1 - Supprime la génération de plans parallèles. L'opération sera exécutée en série.

2-64 - Limite le nombre de processeurs à la valeur spécifiée. Moins de processeurs peuvent être utilisés en fonction de la charge de travail actuelle. Si une valeur supérieure au nombre de CPU disponibles est spécifiée, le nombre réel de CPU disponibles est utilisé.

Je ne sais pas quelle est la meilleure utilisation de MAXDOP est, cependant, je supposerais et dirais que si vous avez une table avec 8 partitions dessus, vous voudriez spécifier MAXDOP(8) en raison des limitations d'E/S, mais je peux me tromper.

Voici quelques liens rapides que j'ai trouvés sur MAXDOP :

Livres en ligne :Degré de parallélisme

Directives générales à utiliser pour configurer l'option MAXDOP