2016-04-29 63 views
1

根據聚簇索引列或分區(同一列),哪個劃分選項更好(用於性能目的)?如何爲並行加載劃分表

我要拆表加載它使用SSIS(SQL服務器2008 R2企業版)平行於甲骨文11

第一選項創建羣集索引尋求基於那裏的條件和第二分區上創建聚集索引掃描。

回答

1

如果源數據庫中的分區位於不同的磁盤上,那麼您可以利用此功能來執行並行讀取。在您的SSIS包中,您將擁有多個數據源,每個數據源都從不同的分區讀取。然後你可以在加載之前合併這些流(Union All轉換)。

但是您的目標系統(Oracle?)可能成爲這種情況下的瓶頸,或者實際上運行SSIS的計算機或網絡。通常最好在具有足夠處理器能力和RAM的單獨計算機上運行SSIS,因此它不會佔用SQL Server的資源。

如果您正在運行SQL Server企業版,那麼查詢優化器可能會決定製定並行執行計劃,因爲數據量很大。你應該檢查圖形執行計劃,看看它在做什麼。

您需要測試以確定瓶頸的位置。然後優化以消除每個瓶頸。一旦你清除了一個瓶頸,整個系統的另一部分將成爲限制因素。

你可以做一些簡單的時間測試這樣。第一單流。

enter image description here

然後並行流。這將允許您衡量您的SQL Server計算機的性能以及使用並行流是否有任何好處。

enter image description here

有一個關於微軟虛擬學院的課程:「使用Microsoft SQL Server設計BI解決方案」和第五模塊「設計一個ETL解決方案」有關使用SSIS加載不同的策略會談。

另外一個重要的觀點:您需要在服務器上運行SSIS包以獲得最佳性能。如果您在Visual Studio(SQL Server數據工具)中運行該包,性能將會大大降低。

+0

如果我只是創建了許多(2或3)具有不同條件的數據流塊(僅基於一列進行劃分)並且並行運行它們呢?這將比一個數據流塊(整個表)更快? – PNPTestovir

+1

我已更新我的答案,以顯示如何測試此功能。只有通過測試你才能找出答案。 – RichardCL