Configurer max degree of parallelism (option de configuration de serveur)

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 (MAXDOP), 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.

Notes

SQL Server 2019 (15.x) offre désormais des suggestions automatiques de définition de l’option MAXDOP 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, la valeur par défaut de MAXDOP pour chaque nouvelle base de données unique, chaque base de données de pool élastique et chaque instance managée est 8. Dans Azure SQL Database, la configuration de MAXDOP limitée à la base de données est définie sur 8. Dans Azure SQL Managed Instance, l’option de configuration de serveur max degree of parallelism (MAXDOP) 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.

Avant de commencer

Considérations

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

  • Attribuer la valeur 0 à l’option Degré maximal de parallélisme (MAXDOP) permet à SQL Server d’utiliser tous les processeurs disponibles, dans la limite de 64. 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 lors d’une exécution de requête parallèle, une seule requête peut générer plusieurs tâches jusqu’à la limite de MAXDOP, et que chaque tâche utilisera 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 :

    • Au niveau de la requête, utilisez l’indicateur de requêteMAXDOP ou l’indicateur de Magasin des requêtes.
    • Au niveau de la base de données, avec la configuration limitée à la base de donnéesMAXDOP.
    • Au niveau de la charge de travail, avec l’option de configuration de groupe de charge de travail Resource GovernorMAX_DOP.
  • 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 gère également le parallélisme de DBCC CHECKTABLE, DBCC CHECKDB et 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 Indicateurs de trace (Transact-SQL).

  • 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

Avec SQL Server 2016 (13.x), lors du démarrage du service, si 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 ci-dessous 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éliorera 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.

Depuis SQL Server 2016 (13.x), suivez 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 à une valeur égale ou inférieure au 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 Conservez MAXDOP à une valeur égale ou inférieure au 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

Notes

Le nœud NUMA dans la table ci-dessus 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 a été 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 (Transact-SQL).

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 à une valeur égale ou inférieure au 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 Conservez MAXDOP à une valeur égale ou inférieure au 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

Sécurité

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 d’exécuter l’instruction RECONFIGURE, un utilisateur doit disposer de l’autorisation de niveau serveur ALTER SETTINGS. 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 ci-dessous.

Configurer l'option degré maximal de parallélisme

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

Configurer l'option degré maximal de parallélisme avec T-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 AdventureWorks2022;  
GO   
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
EXEC sp_configure 'max degree of parallelism', 16;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  

Pour plus d’informations, consultez Options de configuration de serveur (SQL Server).

Suivi : Après avoir configuré l'option Degré maximal de parallélisme

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