Configuration du serveur : degré maximal de parallélisme

S'applique à : SQL Server

Cet article explique comment configurer l’option de configuration de serveur max degree of parallelism (MAXDOP) dans SQL Server en utilisant SQL Server Management Studio, Azure Data Studio ou Transact-SQL. Lorsqu’une instance SQL Server s’exécute sur un ordinateur comportant plusieurs microprocesseurs ou processeurs, le Moteur de base de données détecte si le parallélisme peut être utilisé. Le degré de parallélisme définit le nombre de processeurs employés pour exécuter une seule instruction, dans chaque exécution de plan parallèle. Vous pouvez utiliser l'option max degree of parallelism pour limiter le nombre de processeurs à utiliser dans une exécution de plans parallèles. Pour plus d’informations sur la limite définie par max degree of parallelism, consultez la section Considérations dans cette page. SQL Server prend en compte les plans d’exécution parallèle pour les requêtes, les opérations du langage de définition de données (DDL) d’index, les insertions parallèles, la modification de colonne en ligne, la collecte de statistiques parallèle et l’alimentation des curseurs statiques et de jeux de clés.

SQL Server 2019 (15.x) a introduit des recommandations automatiques pour définir l’option max degree of parallelism de configuration du serveur en fonction du nombre de processeurs disponibles pendant le processus d’installation. L’interface utilisateur du programme d’installation vous permet d’accepter les paramètres recommandés ou d’entrer vos propres valeurs. Pour plus d’informations, consultez la page Configuration du moteur de base de données - MaxDOP.

Dans Azure SQL Database et Azure SQL Managed Instance, le paramètre MAXDOP par défaut pour chaque nouvelle base de données unique, base de données de pool élastique et instance managée est 8. Dans Azure SQL Database, la configuration délimitée à la MAXDOP base de données est définie 8sur . Dans Azure SQL Managed Instance, l’option de configuration du max degree of parallelism serveur est définie sur 8.

Pour plus d’informations sur MAXDOP dans Azure SQL Database, consultez Configurer le degré maximal de parallélisme (MAXDOP) dans Azure SQL Database.

À propos de l’installation

Seul un administrateur de base de données qualifié ou un spécialiste agréé doit changer cette option avancée SQL Server.

Si l’option masque d'affinité n’est pas définie sur la valeur par défaut, il se peut qu’elle limite le nombre de processeurs disponibles pour SQL Server sur les systèmes de traitement multiprocesseur symétrique (SMP, symmetric multiprocessing).

Paramètre max degree of parallelism permettant à 0 SQL Server d’utiliser tous les processeurs disponibles jusqu’à 64 processeurs. Toutefois, il ne s’agit pas de la valeur recommandée dans la plupart des cas. Pour plus d’informations sur les valeurs recommandées pour le degré maximal de parallélisme, consultez la section Recommandations de cette page.

Pour supprimer la génération de plans parallèles, attribuez max degree of parallelism à 1. Définissez la valeur sur un nombre compris entre 1 et 32 767 pour spécifier le nombre maximal de noyaux de processeur pouvant être utilisés au cours de l’exécution d’une requête individuelle. Si une valeur supérieure au nombre de processeurs disponibles est spécifiée, le nombre réel de processeurs disponibles est utilisé. Si l'ordinateur est équipé d'un seul processeur, la valeur de l'option max degree of parallelism est ignorée.

La limite du degré maximal de parallélisme est spécifiée par tâche. Il ne s’agit pas d’une limite par demande ou par requête. Cela signifie que pendant une exécution de requête parallèle, une seule requête peut générer plusieurs tâches jusqu’à la limite MAXDOP, et chaque tâche utilise un worker et un planificateur. Pour plus d’informations, consultez la section Planification des tâches parallèles dans le guide de l’architecture des threads et des tâches.

Vous pouvez remplacer la valeur de configuration de serveur Degré maximal de parallélisme :

Les opérations d'index destinées à créer ou à recréer un index, voire à supprimer un index cluster, peuvent nécessiter une quantité importante de ressources. Vous pouvez remplacer la valeur de l'option max degree of parallelism pour les opérations d'index en spécifiant l'option d'index MAXDOP dans l'instruction d'index. La valeur MAXDOP est appliquée à l’instruction au moment de l’exécution et elle n’est pas stockée dans les métadonnées de l’index. Pour plus d’informations, consultez Configurer des opérations d’index parallèles.

En plus des requêtes et des opérations d’index, cette option contrôle également le parallélisme de DBCC CHECKTABLE, DBCC CHECKDBet DBCC CHECKFILEGROUP. Vous pouvez désactiver les plans d’exécution parallèle pour ces instructions en utilisant l’indicateur de trace 2528. Pour plus d’informations, consultez l’indicateur de trace 2528.

SQL Server 2022 (16.x) a introduit une nouvelle fonctionnalité appelée Commentaires sur le degré de parallélisme (DOP) pour améliorer le niveau de performance des requêtes en identifiant les inefficacités du parallélisme pour les requêtes répétées, en fonction du temps écoulé et des attentes. Les commentaires DOP font partie de la famille de fonctionnalités de traitement intelligent des requêtes et traitent de l’utilisation non optimale du parallélisme pour les requêtes répétées. Pour plus d’informations, consultez Commentaires sur le degré de parallélisme (DOP).

Recommandations

Dans SQL Server 2016 (13.x) et versions ultérieures, pendant le démarrage du service, si le Moteur de base de données détecte plus de huit cœurs physiques par nœud ou socket NUMA au démarrage, les nœuds soft-NUMA sont créés automatiquement par défaut. Moteur de base de données place les processeurs logiques du même cœur physique dans différents nœuds soft-NUMA. Les recommandations du tableau suivant visent à conserver tous les threads de travail d’une requête parallèle au sein du même nœud soft-NUMA. Cela améliore les performances des requêtes et de la distribution des threads de travail sur les nœuds NUMA de la charge de travail. Pour plus d’informations, consultez Soft-NUMA (SQL Server).

Dans SQL Server 2016 (13.x) et versions ultérieures, utilisez les instructions suivantes lorsque vous configurez la valeur de configuration du max degree of parallelism serveur :

Configurer le serveur Nombre de processeurs Assistance
Serveur avec un seul nœud NUMA Inférieur ou égal à huit processeurs logiques Conserver MAXDOP au niveau ou sous le nombre de processeurs logiques
Serveur avec un seul nœud NUMA Plus de huit processeurs logiques Conservez MAXDOP à 8
Serveur avec plusieurs nœuds NUMA Inférieur ou égal à 16 processeurs logiques par nœud NUMA Conserver MAXDOP au niveau ou sous le nombre de processeurs logiques par nœud NUMA
Serveur avec plusieurs nœuds NUMA Plus de 16 processeurs logiques par nœud NUMA Conservez MAXDOP à la moitié du nombre de processeurs logiques par nœud NUMA avec une valeur MAX de 16

Le nœud NUMA dans le tableau précédent fait référence aux nœuds NUMA soft créés automatiquement par SQL Server 2016 (13.x) et versions ultérieures, ou aux nœuds NUMA basés sur le matériel si soft-NUMA est désactivé.

Utilisez ces instructions lorsque vous définissez l’option dégré maximal de parallélisme pour les groupes de charge de travail de Resource Governor. Pour plus d’informations, consultez CREATE WORKLOAD GROUP.

SQL Server 2014 et versions antérieures

De SQL Server 2008 (10.0.x) à SQL Server 2014 (12.x), utilisez les directives suivantes quand vous configurez la valeur de configuration de serveur max degree of parallelism :

Configurer le serveur Nombre de processeurs Assistance
Serveur avec un seul nœud NUMA Inférieur ou égal à huit processeurs logiques Conserver MAXDOP au niveau ou sous le nombre de processeurs logiques
Serveur avec un seul nœud NUMA Plus de huit processeurs logiques Conservez MAXDOP à 8
Serveur avec plusieurs nœuds NUMA Inférieur ou égal à huit processeurs logiques par nœud NUMA Conserver MAXDOP au niveau ou sous le nombre de processeurs logiques par nœud NUMA
Serveur avec plusieurs nœuds NUMA Plus de huit processeurs logiques par nœud NUMA Conservez MAXDOP à 8

autorisations

Les autorisations d’exécution de sp_configure , sans paramètre ou avec le premier paramètre uniquement, sont accordées par défaut à tous les utilisateurs. Pour exécuter sp_configure avec les deux paramètres afin de modifier une option de configuration ou pour exécuter l’instruction RECONFIGURE, un utilisateur doit disposer de l’autorisation ALTER SETTINGS au niveau du serveur. L’autorisation ALTER SETTINGS est implicitement détenue par les rôles serveur fixes sysadmin et serveradmin.

Utiliser SQL Server Management Studio ou Azure Data Studio

Dans Azure Data Studio, installez l’extension Database Admin Tool Extensions for Windows ou utilisez la méthode T-SQL suivante.

Ces options modifient l’instance MAXDOP .

  1. Dans l’Explorateur d’objets, cliquez avec le bouton de droite sur l’instance désirée, puis sélectionnez Propriétés.

  2. Cliquez sur le nœud Avancé.

  3. Dans la zone Degré maximal de parallélisme , sélectionnez le nombre maximal de processeurs à utiliser au cours de l'exécution d'un plan parallèle.

Utiliser Transact-SQL

  1. Connectez-vous au moteur de base de données avec SQL Server Management Studio ou Azure Data Studio.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. Cet exemple montre comment utiliser sp_configure pour attribuer à l’option max degree of parallelism la valeur 16.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    
    EXECUTE sp_configure 'max degree of parallelism', 16;
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Pour plus d’informations, consultez l’article Options de configuration du serveur.

Suivi : après avoir configuré l’option max degree of parallelism

Le paramètre prend effet immédiatement sans redémarrage du serveur.