解譯資料分割物件的執行計劃
新增: 2005 年 12 月 5 日
含有資料分割資料庫資料表、索引和索引檢視的查詢執行計劃,一般都會有代表聯結的巢狀迴圈運算子,而這個聯結介於具有固定掃描運算子的資料分割 (外部) 與資料分割物件的掃描或搜尋 (內部) 之間。
在資料分割物件的執行計劃中,巢狀迴圈聯結會從內部讀取一或多個資料表或索引資料分割。固定掃描運算子之值屬性中所包含的數字代表資料分割編號。記下資料分割編號可確認查詢最佳化工具執行的是資料分割刪除。
編譯時間和執行階段都會發生資料分割刪除。在執行計劃中可看到編譯時間發生的刪除,而執行計劃是透過 SET 選項 SHOWPLAN_ALL 或 SHOWPLAN_XML 所產生,或按一下 SQL Server Management Studio 中的 [顯示估計執行計劃] 所產生。在執行計劃中可看到執行階段發生的刪除,而執行計劃是透過 SET 選項 STATISTICS PROFILE 或 STATISTICS XML 所產生,或按一下 Management Studio 中的 [包括實際執行計劃] 所產生。
產生資料分割資料表或索引的平行計劃時,平行處理原則運算子會出現在固定掃描與巢狀迴圈聯結運算子之間。在此情況下,聯結外部的多個執行緒每個都會讀取和處理不同的資料分割。執行緒數目可與資料分割數目不同。如果執行緒和資料分割的數目相同,則每個執行緒都只能處理一個資料分割。如果執行緒數目大於資料分割數目,則在處理資料分割時,多出的執行緒會閒置。如果執行緒數目小於資料分割數目,則執行緒會開始工作,而某個執行緒會完成下一個資料分割上的第一個工作。在任何時間,一個執行緒都只能處理一個資料分割。在多個執行緒之間不可共用一個資料分割,但可平行處理多個資料分割。
範例
下列查詢會存取 AdventureWorks 範例資料庫中資料分割 Production.TransactionHistoryArchive 資料表的兩個資料分割。產生這個查詢的顯示計劃時,會產生巢狀迴圈聯結運算子,在聯結兩個資料表資料分割以滿足查詢時顯示。固定掃描運算子會緊跟在巢狀迴圈聯結運算子之後出現。您可在值屬性中識別聯結以滿足這個查詢的這兩個資料分割,而這個屬性是針對固定掃描運算子所列出。
附註: |
---|
若要重新產生這個範例,您必須先針對 AdventureWorks 範例資料庫執行 PartitionAW.sql 指令碼。如需詳細資訊,請參閱<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
如果是用 Management Studio 產生圖形執行計劃,請將滑鼠移動至 [固定掃描] 運算子圖示上方,或以滑鼠右鍵按一下 [固定掃描] 運算子圖示並選擇 [屬性]。在 [屬性] 窗格中,[值] 屬性會列出 ((1)), ((2))。這些是與涉及查詢之資料分割相對應的數字。
如果產生 XML 顯示計劃,請在 NestedLoops 元素下方尋找 ConstantScan 元素。會針對 ConstantScan 下的 Values 子元素列出資料分割編號,如下所示:
<ConstantScan>
<Values>
<Row>
<ScalarOperator ScalarString="(1)">
<Const ConstValue="(1)" />
</ScalarOperator>
</Row>
<Row>
<ScalarOperator ScalarString="(2)">
<Const ConstValue="(2)" />
</ScalarOperator>
</Row>
</Values>
</ConstantScan>
請參閱
參考
巢狀迴圈 Showplan 運算子
固定掃描 Showplan 運算子
Parallelism Showplan 運算子
顯示圖形執行計劃 (SQL Server Management Studio)
概念
資料分割資料表與索引
使用 Showplan SET 選項來顯示執行計劃 (Transact-SQL)