Configuration d'opérations d'index parallèles
Sur les ordinateurs multiprocesseurs qui exécutent SQL Server Enterprise, 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 max degree of parallelism, par la charge de travail actuelle et par les statistiques d'index. L'option max degree of parallelism détermine le nombre maximal de processeurs à utiliser au cours de l'exécution d'un 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. Le 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 disponibles que dans les éditions Enterprise, Developer et Evaluation de SQL Server.
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 spécifiant l'option d'index MAXDOP et 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 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 |
Utilise le nombre réel d'UC disponibles en fonction de la charge de travail du 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
Toutes les règles sémantiques qui sont utilisées avec l'option max degree of parallelism s'appliquent également à l'option d'index MAXDOP. Pour plus d'informations, consultez Option Degré maximum de parallélisme.
Lorsque vous exécutez l'instruction ALTER INDEX REORGANIZE avec ou sans LOB_COMPACTION, la valeur max degree of parallelism indique une opération mono-thread. L'option d'index MAXDOP ne peut pas être spécifiée dans l'instruction ALTER INDEX REORGANIZE.
Opérations d'index en ligne
Les opérations d'index en ligne prennent en charge l'activité de plusieurs utilisateurs simultanés. Vous pouvez utiliser l'option MAXDOP pour contrôler le nombre maximal de processeurs dédiés à l'opération d'index en ligne. Ceci vous permet de bien répartir les ressources entre l'opération d'index et les utilisateurs simultanés. Pour plus d'informations, consultez Exécution d'opérations en ligne sur les index.
Opérations d'index partitionné
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 Consignes spéciales pour les index partitionnés.
Exemple
L'exemple suivant crée l'index IX_ProductVendor_VendorID sur la table ProductVendor et attribue à l'option max degree of parallelism la valeur 8. Partant de l'hypothèse que le serveur dispose au minimum de huit processeurs, le Moteur de base de données limite l'exécution de l'opération d'index à huit processeurs maximum.
USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = N'IX_ProductVendor_VendorID')
DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
GO
CREATE INDEX IX_ProductVendor_VendorID
ON Purchasing.ProductVendor (VendorID)
WITH (MAXDOP=8);
GO