Freigeben über


Interpretieren von Ausführungsplänen partitionierter Objekte

Neu: 05. Dezember 2005

Abfrageausführungspläne, an denen partitionierte Datenbanktabellen, Indizes und indizierte Sichten beteiligt sind, verfügen in der Regel über Nested Loops-Operatoren, die Verknüpfungen zwischen den Partitionen mit Constant Scan-Operatoren auf der Außenseite und Scans oder Suchvorgängen des partitionierten Objekts auf der Innenseite darstellen.

In Ausführungsplänen partitionierter Objekte liest die Nested Loops-Verknüpfung mindestens eine innere Tabellen- oder Indexpartition. Die im Values-Attribut der Constant Scan-Operatoren enthaltenen Zahlen stellen die Partitionsnummern dar. Durch Notieren der Partitionsnummern wird bestätigt, dass der Abfrageoptimierer eine Partitionsentfernung ausführt.

Die Partitionsentfernung findet sowohl zur Kompilierzeit als auch zur Laufzeit statt. Zur Kompilierzeit auftretende Entfernungen können in Ausführungsplänen, die durch die SET-Optionen SHOWPLAN_ALL oder SHOWPLAN_XML generiert werden, oder durch Klicken auf Geschätzten Ausführungsplan anzeigen in SQL Server Management Studio angezeigt werden. Zur Laufzeit auftretende Entfernungen können in Ausführungsplänen, die durch die SET-Optionen STATISTICS PROFILE oder STATISTICS XML generiert werden, oder durch Klicken auf Tatsächlichen Ausführungsplan einschließen in Management Studio angezeigt werden.

Wenn parallele Pläne für partitionierte Tabellen oder Indizes generiert werden, wird ein Parallelism-Operator zwischen den Verknüpfungsoperatoren Constant Scan und Nested Loops angezeigt. In diesem Fall lesen und bearbeiten mehrere Threads auf der Außenseite der Verknüpfung jeweils eine andere Partition. Die Threadanzahl kann von der Anzahl der Partitionen abweichen. Ist die Anzahl der Threads und Partitionen gleich, bearbeitet jeder Thread genau eine Partition. Gibt es mehr Threads als Partitionen, befinden sich die überzähligen Threads im Leerlauf, während die Partitionen verarbeitet werden. Gibt es weniger Threads als Partitionen, beginnen die Threads mit der Arbeit, und der Thread, der den Vorgang zuerst fertig stellt, bearbeitet die nächste Partition. Eine Partition wird nur von jeweils einem Thread verarbeitet. Eine Partition wird nicht von mehreren Threads gemeinsam genutzt. Es können jedoch mehrere Partitionen parallel verarbeitet werden.

Beispiel

In der folgenden Abfrage wird auf zwei Partitionen der partitionierten Production.TransactionHistoryArchive-Tabelle in der AdventureWorks-Beispieldatenbank zugegriffen. Wenn Showplans für diese Abfrage generiert werden, wird ein Nested Loops-Verknüpfungsoperator erstellt, der anzeigt, wann die beiden Tabellenpartitionen verknüpft werden, um die Abfrage zu erfüllen. Ein Constant Scan-Operator wird unmittelbar nach dem Nested Loops-Verknüpfungsoperator angezeigt. Die beiden Partitionen, die zur Erfüllung dieser Abfrage verknüpft werden, werden im Values-Attribut identifiziert, das für den Constant Scan-Operator aufgelistet wird.

ms345599.note(de-de,SQL.90).gifHinweis:
Sie müssen zunächst das PartitionAW.sql-Skript für die AdventureWorks-Beispieldatenbank ausführen, um dieses Beispiel zu reproduzieren. Weitere Informationen finden Sie unter 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

Wenn ein grafischer Ausführungsplan in Management Studio erstellt wird, bewegen Sie den Cursor über das Symbol des Constant Scan-Operators, oder klicken Sie mit der rechten Maustaste auf das Symbol des Constant Scan-Operators, und wählen Sie Eigenschaften aus. Im Eigenschaftenbereich listet das Values-Attribut ((1)), ((2)) auf. Diese Zahlen entsprechen den Partitionen, die an der Abfrage beteiligt sind.

Wird ein XML-Showplan erstellt, suchen Sie nach einem ConstantScan-Element unter dem NestedLoops-Element. Die Partitionsnummern werden für das untergeordnete Element Values unter ConstantScan folgendermaßen aufgelistet:

<ConstantScan>

     <Werte>

          <Zeile>

               <ScalarOperator ScalarString="(1)">

                    <Const ConstValue="(1)" />

               </ScalarOperator>

          </Row>

          <Zeile>

               <ScalarOperator ScalarString="(2)">

                    <Const ConstValue="(2)" />

               </ScalarOperator>

          </Row>

     </Values>

</ConstantScan>

Siehe auch

Verweis

Nested Loops (Showplanoperator)
Constant Scan (Showplanoperator)
Parallelism (Showplanoperator)
Anzeigen von grafischen Ausführungsplänen (SQL Server Management Studio)

Konzepte

Partitionierte Tabellen und Indizes
Anzeigen von Ausführungsplänen mithilfe der Showplan-SET-Optionen (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005