Configurer des opérations d'index parallèles

Cette rubrique définit le degré maximal de parallélisme et explique comment modifier ce paramètre dans SQL Server 2012 à l'aide de SQL Server Management Studio ou de Transact-SQL. Sur les ordinateurs multiprocesseurs qui exécutent SQL Server Enterprise ou une version ultérieure, les instructions d'index peuvent, à l'instar d'autres requêtes, utiliser des processeurs multiples pour réaliser les opérations d'analyse, de tri et d'indexation associées à l'instruction d'index. Le nombre de processeurs utilisés pour exécuter une instruction d'index est déterminé par l'option de configuration Degré maximal de parallélisme, la charge de travail actuelle et les statistiques d'index. L'option max degree of parallelism détermine le nombre maximal de processeurs à utiliser dans une exécution de plan parallèle. Si le Moteur de base de données SQL Server détecte que le système est occupé, le degré de parallélisme de l'opération d'index est automatiquement réduit avant l'exécution de l'instruction. Moteur de base de données peut également réduire le degré de parallélisme si la colonne clé principale d'un index non partitionné a un nombre limité de valeurs distinctes ou si la fréquence de chaque valeur distincte varie considérablement.

[!REMARQUE]

Les opérations d'index parallèles ne sont pas disponibles dans toutes les édition de SQL Server. Pour plus d'informations, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2012.

Dans cette rubrique

  • Avant de commencer :

    Limitations et restrictions

    Sécurité

  • Pour configurer l'option Degré maximal de parallélisme à l'aide de :

    SQL Server Management Studio

    Transact-SQL

Avant de commencer

Limitations et restrictions

  • Le nombre de processeurs utilisés par l'optimiseur de requête garantit généralement des performances optimales. Toutefois, des opérations comme la création, la reconstruction ou la suppression d'index volumineux exigent beaucoup de ressources et peuvent, pendant leur exécution, entraîner un manque de ressources pour d'autres opérations d'applications ou de base de données. Lorsque cette situation se produit, vous pouvez configurer manuellement le nombre maximal de processeurs utilisés pour exécuter l'instruction d'index en limitant le nombre de processeurs qui peuvent être utilisés par l'opération d'index.

  • L'option d'index MAXDOP remplace l'option de configuration max degree of parallelism uniquement pour la requête qui la spécifie. Le tableau suivant répertorie les valeurs entières valides qui peuvent être spécifiées au moyen de l'option de configuration max degree of parallelism et de l'option d'index MAXDOP.

    Valeur

    Description

    0

    Spécifie que le serveur détermine le nombre de processeurs utilisés, selon la charge système actuelle. Il s'agit de la valeur par défaut et recommandée.

    1

    Supprime la génération d'un plan parallèle. L'opération est exécutée en série.

    2-64

    Limite le nombre de processeurs à la valeur spécifiée. Un nombre moins élevé de processeurs peuvent être utilisés en fonction de la charge de travail actuelle. Si une valeur supérieure au nombre d'UC disponibles est spécifiée, c'est le nombre d'UC disponibles qui est utilisé.

  • L'exécution parallèle d'index et l'option d'index MAXDOP s'appliquent aux instructions Transact-SQL suivantes :

    • CREATE INDEX

    • ALTER INDEX REBUILD

    • DROP INDEX (index cluster uniquement.)

    • ALTER TABLE ADD (index) CONSTRAINT

    • ALTER TABLE DROP (index cluster) CONSTRAINT

  • L'option d'index MAXDOP ne peut pas être spécifiée dans l'instruction ALTER INDEX REORGANIZE.

  • Les besoins en mémoire des opérations d'index partitionné avec tri peuvent augmenter si l'optimiseur de requête applique des degrés de parallélisme à l'opération de construction. Plus le degré de parallélisme est élevé, plus les besoins en mémoire sont importants. Pour plus d'informations, consultez Tables et index partitionnés.

Sécurité

Autorisations

Nécessite une autorisation ALTER sur la table ou la vue.

Icône de flèche utilisée avec le lien Retour en haut[Top]

Utilisation de SQL Server Management Studio

Pour définir le degré maximal de parallélisme sur un index

  1. Dans l'Explorateur d'objets, cliquez sur le signe plus (+) pour développer la base de données qui contient la table dans laquelle vous souhaitez spécifier un degré maximal de parallélisme pour un index.

  2. Développez le dossier Tables.

  3. Cliquez sur le signe plus (+) pour développer la table sur laquelle vous souhaitez définir le degré maximal de parallélisme pour un index.

  4. Développez le dossier Index.

  5. Cliquez avec le bouton droit sur l'index où vous souhaitez définir le degré maximal de parallélisme et sélectionnez Propriétés.

  6. Sous Sélectionner une page, sélectionnez Options.

  7. Sélectionnez Degré maximal de parallélisme, puis entrez une valeur comprise entre 1 et 64.

  8. Cliquez sur OK.

Icône de flèche utilisée avec le lien Retour en haut[Top]

Utilisation de Transact-SQL

Pour définir le degré maximal de parallélisme sur un index existant

  1. Dans l'Explorateur d'objets, connectez-vous à une instance de Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    USE AdventureWorks2012; 
    GO
    /*Alters the IX_ProductVendor_VendorID index on the Purchasing.ProductVendor table so that, if the server has eight or more processors, the Database Engine will limit the execution of the index operation to eight or fewer processors.
    */
    ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor
    REBUILD WITH (MAXDOP=8); 
    GO
    

Pour plus d'informations, consultez ALTER INDEX (Transact-SQL).

Définir le degré maximal de parallélisme sur un nouvel index

  1. Dans l'Explorateur d'objets, connectez-vous à une instance de Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    USE AdventureWorks2012;
    GO
    CREATE INDEX IX_ProductVendor_NewVendorID 
    ON Purchasing.ProductVendor (BusinessEntityID)
    WITH (MAXDOP=8);
    GO
    

Pour plus d'informations, consultez CREATE INDEX (Transact-SQL).

Icône de flèche utilisée avec le lien Retour en haut[Top]