Partager via


Configuration du serveur : degré maximal de parallélisme

S'applique à :SQL Server

Cet article explique comment configurer l’option de configuration du serveur max degree of parallelism (MAXDOP) dans SQL Server à l’aide de SQL Server Management Studio ou de 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) offre désormais des suggestions automatiques de définition de l’option de configuration du serveur max degree of parallelism 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, SQL Database dans Fabric et Azure SQL Managed Instance, le paramètre par défaut MAXDOP 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 et SQL Database dans Fabric, la configuration de l'étendue de la base de données est réglée sur MAXDOP. Dans Azure SQL Managed Instance, l’option de configuration de serveur max degree of parallelism est définie sur 8.

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

Considerations

Cette option est une option avancée et doit être modifiée uniquement par un professionnel de base de données expérimenté.

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).

Affecter la valeur max degree of parallelism à l’option 0 permet à SQL Server d’utiliser tous les processeurs disponibles, 64 au maximum. 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 qu’au cours d’une exécution de requête parallèle, une requête unique peut générer plusieurs tâches jusqu’à la MAXDOP limite, et chaque tâche utilise un worker et un planificateur. Pour plus d’informations, consultez la section Planification de tâches parallèles du 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 le degré maximal de parallélisme pour les opérations d’index en spécifiant l’option MAXDOP d’index dans l’instruction d’index. La MAXDOP valeur est appliquée à l’instruction au moment de l’exécution et n’est pas stockée dans les métadonnées d’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 gère également le parallélisme de DBCC CHECKTABLE, DBCC CHECKDB, et DBCC CHECKFILEGROUP. Vous pouvez désactiver les plans d’exécution parallèles pour ces instructions à l’aide de 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).

Recommendations

Dans SQL Server 2016 (13.x) et versions ultérieures, lors du démarrage du service, si le Moteur de base de données détecte plus de huit cœurs physiques par socket ou nœud NUMA au démarrage, des 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 contenues dans le tableau suivant ont pour but de 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 la distribution des threads de travail entre les nœuds NUMA pour 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 directives suivantes quand vous configurez la valeur de configuration de serveur max degree of parallelism :

Configurer le serveur Nombre de processeurs Guidance
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 Conserver 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 Conserver MAXDOP à moitié le nombre de processeurs logiques par nœud NUMA avec une valeur MAXIMALE de 16

Le nœud NUMA dans le tableau précédent fait référence à des nœuds soft-NUMA automatiquement créés par SQL Server 2016 (13.x) et versions ultérieures, ou des nœuds NUMA 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 Guidance
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 Conserver 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 Conserver MAXDOP à 8

Permissions

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

Ces options modifient MAXDOP pour l’instance.

  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.

  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.