Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Data creazione: 5 dicembre 2005
I piani di esecuzione delle query che interessano oggetti partizionati quali tabelle di database, indici e viste indicizzate includono in genere operatori Nested Loops che rappresentano i join tra le partizioni con gli operatori Constant Scan nel lato esterno, nonché scansioni o ricerche dell'oggetto partizionato nel lato interno.
Nei piani di esecuzione degli oggetti partizionati il join Nested Loops legge una o più partizioni di tabelle o indici dal lato interno. I numeri contenuti nell'attributo Values degli operatori Constant Scan rappresentano i numeri di partizione. La visualizzazione dei numeri di partizione indica che è in corso l'eliminazione della partizione da parte di Query Optimizer.
Il processo di eliminazione viene eseguito sia in fase di compilazione che in fase di esecuzione. Le eliminazioni eseguite in fase di compilazione possono essere visualizzate nei piani di esecuzione generati dalle opzioni SET SHOWPLAN_ALL o SHOWPLAN_XML oppure facendo clic su Visualizza piano di esecuzione stimato in SQL Server Management Studio. Quelle eseguite in fase di esecuzione possono essere visualizzate nei piani di esecuzione generati dalle opzioni SET STATISTICS PROFILE o STATISTICS XML oppure facendo clic su Includi piano di esecuzione effettivo in Management Studio.
Quando si generano piani paralleli per le tabelle o gli indici partizionati, viene visualizzato un operatore Parallelism tra gli operatori di join Constant Scan e Nested Loops. In questo caso, ogni thread multiplo nel lato esterno del join legge ed elabora una partizione diversa. Il numero di thread può essere diverso dal numero di partizioni. Se è uguale, ogni thread elabora una sola partizione. Se i thread sono più numerosi delle partizioni, quelli in eccesso rimangono inattivi durante l'elaborazione delle partizioni. Se invece il numero di thread è inferiore a quello delle partizioni, tutti i thread iniziano l'elaborazione e quello che termina per primo passa alla partizione successiva. Un thread può elaborare una sola partizione alla volta. Una partizione non viene condivisa tra più thread, ma è possibile elaborare più partizioni in parallelo.
Esempio
La query seguente accede a due partizioni della tabella Production.TransactionHistoryArchive partizionata del database di esempio AdventureWorks. Quando vengono generate le classi di evento Showplan per questa query, viene creato un operatore di join Nested Loops che indica quando le due partizioni della tabella vengono unite in join per soddisfare la query. Un operatore Constant Scan viene visualizzato subito dopo l'operatore di join Nested Loops. Le due partizioni unite in join per soddisfare la query vengono identificate nell'attributo Values elencato per l'operatore Constant Scan.
[!NOTA] Per riprodurre l'esempio è innanzitutto necessario eseguire lo script PartitionAW.sql nel database di esempio AdventureWorks. Per ulteriori informazioni, vedere 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
Se in Management Studio viene generato un piano di esecuzione grafico, spostare il mouse sull'icona dell'operatore Constant Scan oppure fare clic con il pulsante destro del mouse sull'icona dell'operatore Constant Scan e scegliere Proprietà. Nel riquadro delle proprietà l'attributo Values contiene i valori ((1)) e ((2)). Questi valori corrispondono alle partizioni coinvolte nella query.
Se viene generata una classe di evento Showplan XML, individuare un elemento ConstantScan nell'elemento NestedLoops. I numeri di partizione relativi al sottoelemento Values di ConstantScan vengono elencati nel modo seguente:
<ConstantScan>
<Values>
<Row>
<ScalarOperator ScalarString="(1)">
<Const ConstValue="(1)" />
</ScalarOperator>
</Row>
<Row>
<ScalarOperator ScalarString="(2)">
<Const ConstValue="(2)" />
</ScalarOperator>
</Row>
</Values>
</ConstantScan>
Vedere anche
Riferimento
Operatore Showplan Nested Loops
Operatore Showplan Constant Scan
Operatore Showplan Parallelism
Visualizzazione dei piani di esecuzione grafici (SQL Server Management Studio)
Concetti
Tabelle e indici partizionati
Visualizzazione di piani di esecuzione tramite le opzioni SET SHOWPLAN (Transact-SQL)