2012-09-08 109 views
2

我們正在處理SQL Server數據庫中的大數據,
現在包執行需要數小時才能執行。
有什麼方法可以優化軟件包的執行時間嗎?
我知道關於SSIS Parallelism
有沒有其他最好的方法?優化SSIS 2008包

編輯:
我們正在處理超過2千萬記錄。
SQL服務器數據庫是數據源以及目的地(在同一個服務器中),並且我使用了轉換,如派生列,條件拆分,多播,數據轉換,查找,OLEDB命令,OLEDB目標,OLEDB源,合併,合併連接,分類器,聚合轉換。

+0

正如你的問題所表達的那樣,它含糊不清,無法回答。 「大數據」對您意味着什麼?你的瓶頸是什麼?包裹在哪裏花費時間?你的數據流是什麼樣的?你的數據類型是什麼? – billinkc

+0

要添加到比爾的問題......數據源在哪裏?目的地在哪裏?你正在進行什麼樣的轉變? –

回答

1

查看任何需要對數據進行排序的任務,這些任務通常會降低速度。例如,不是使用合併連接,而是使用具有連接的查詢的數據源。

1

一篇很好的文章: Non-Blocking, Semi-Blocking and Fully-Blocking components in SSIS

基本上,如果你在你的包排序或綜合應用,你將在這些組件上了一個句號,直到每行在將任何行傳遞給下一個組件之前由它們使用。只有在數據流中沒有其他選擇的情況下才可以使用它們。

像合併和合並連接這樣的半塊組件會爲正在傳遞的行創建一個新的緩衝區,因此會在內存中創建緩衝區時產生開銷。在代碼中謹慎使用它。

非阻塞將讓您能夠充分吞吐量

0

避免半封閉成分。

使用SQL任務組件的合併,分揀,聚合函數

套裝10000每批行,並在OLE DB目標提交大小。

在OLE DB目標中設置數據訪問模式(表或視圖快速加載)。