Partager via


Interprétation des plans d'exécution des objets partitionnés

Nouveau : 5 décembre 2005

Les plans d'exécution de requêtes qui impliquent des tables de base de données partitionnées, des index et des vues indexées disposent généralement d'opérateurs Nested Loops représentant les jointures entre les partitions avec opérateurs Constant Scan côté extérieur et les analyses ou les recherches de l'objet partitionné côté intérieur.

Dans les plans d'exécution des objets partitionnés, la jointure Nested Loops lit une ou plusieurs partitions de table ou d'index depuis le côté intérieur. Les numéros affichés dans l'attribut Values des opérateurs Constant Scan identifient les numéros des partitions. Le fait de noter les numéros de partitions permet de confirmer que l'optimiseur de requête procède bel et bien à l'élimination des partitions.

L'élimination des partitions survient à la fois lors de la compilation et de l'exécution. Les éliminations effectuées lors de la compilation peuvent être consultées dans les plans d'exécution générés par les options SET SHOWPLAN_ALL ou SHOWPLAN_XML, ou bien en cliquant sur Afficher le plan d'exécution estimé dans SQL Server Management Studio. Les éliminations effectuées lors de l'exécution sont visibles dans les plans d'exécution générés par les options SET STATISTICS PROFILE ou STATISTICS XML, ou bien en cliquant sur Inclure le plan d'exécution réel dans Management Studio.

Au moment de générer les plans parallèles des tables ou des index partitionnés, un opérateur Parallelism apparaît entre les opérateurs de jointure Constant Scan et Nested Loops. Dans ce cas, chacun des threads côté extérieur de la jointure lit et opère sur une partition distincte. Le nombre de threads peut être différent du nombre de partitions. Si le nombre de threads et de partitions est identique, chaque thread opère sur une seule partition. S'il y a plus de threads que de partitions, les threads en trop restent inactifs lors du traitement des partitions. Si le nombre de threads est inférieur au nombre de partitions, les threads commencent leur travail et le thread qui termine le premier opère sur la partition suivante. Un seul thread traite une partition à la fois. Une partition n'est pas partagée entre plusieurs threads mais plusieurs partitions peuvent être traitées en parallèle.

Exemple

La requête suivante permet d'accéder à deux partitions de la table Production.TransactionHistoryArchive partitionnée dans la base de données exemple AdventureWorks. Lors de la génération des plans d'exécution Showplan de cette requête, un opérateur de jointure Nested Loops est créé et précise le moment où les deux partitions de table sont jointes pour satisfaire la requête. Un opérateur Constant Scan apparaît immédiatement à la suite de l'opérateur de jointure Nested Loops. Les deux partitions jointes en vue de satisfaire la requête sont identifiées dans l'attribut Values répertorié dans l'opérateur Constant Scan.

ms345599.note(fr-fr,SQL.90).gifRemarque :
Pour reproduire cet exemple, vous devez au préalable exécuter le script PartitionAW.sql dans la base de données exemple AdventureWorks. Pour plus d'informations, consultez Readme_PartitioningScript.
USE AdventureWorks;
GO
-- The following SET statement option produces an XML Showplan.
-- To produce a graphical execution plan, click the Include Actual
-- Execution Plan icon in the Management Studio toolbar.
SET STATISTICS XML ON;
GO
SELECT ProductID, Quantity, TransactionDate
FROM Production.TransactionHistoryArchive
WHERE TransactionDate <= '12/02/2003'
ORDER BY ProductID;
GO

Si un plan d'exécution graphique est créé dans Management Studio, placez le pointeur de la souris sur l'icône de l'opérateur Constant Scan ou cliquez avec le bouton droit sur cette même icône, puis sélectionnez Propriétés. Dans le volet Propriétés, l'attribut Values liste les valeurs ((1)) et ((2)), soit les numéros correspondant aux partitions qui interviennent dans la requête.

Si un plan d'exécution Showplan XML est créé, recherchez un élément ConstantScan sous l'élément NestedLoops. Les numéros de partitions du sous-élément Values sont répertoriés sous ConstantScan comme suit :

<ConstantScan>

     <Values>

          <Row>

               <ScalarOperator ScalarString="(1)">

                    <Const ConstValue="(1)" />

               </ScalarOperator>

          </Row>

          <Row>

               <ScalarOperator ScalarString="(2)">

                    <Const ConstValue="(2)" />

               </ScalarOperator>

          </Row>

     </Values>

</ConstantScan>

Voir aussi

Référence

Opérateur Showplan Nested Loops
Opérateur Showplan Constant Scan
Opérateur Showplan Parallelism
Affichage de plans d'exécution graphique (SQL Server Management Studio)

Concepts

Tables et index partitionnés
Affichage des plans d'exécution à l'aide des options Showplan SET (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005