美好的一天。 需要將記錄從Oracle數據庫獲取到SQL Server中的數據庫。數據源類型(ODBC)是使用SQL命令執行的,我根據自己的要求採用所有可能的索引。這個過程運行良好,問題在於它需要很長時間,我需要做些快速的事情。該過程無法通過查找來執行,需要合併或合併連接,只需在特定條件下將表從Oracle加載到SQL即可。如何在SSIS中優化數據下載到服務器
謝謝你的幫助
美好的一天。 需要將記錄從Oracle數據庫獲取到SQL Server中的數據庫。數據源類型(ODBC)是使用SQL命令執行的,我根據自己的要求採用所有可能的索引。這個過程運行良好,問題在於它需要很長時間,我需要做些快速的事情。該過程無法通過查找來執行,需要合併或合併連接,只需在特定條件下將表從Oracle加載到SQL即可。如何在SSIS中優化數據下載到服務器
謝謝你的幫助
檢查什麼是你的限制因素。一般有3點檢查:
遠程服務器速度慢。 源數據庫可以在內存,讀取速度或空閒CPU上運行較低。用直接SELECT
語句替代您的查詢,但不包含WHERE
子句或JOIN
s,並查看您的SSIS包運行速度是否更快。
目標DB。 您可能啓用了索引,硬盤寫入延遲較高或CPU不足。 爲目標表運行INSERT
並查看需要多長時間。
問題可能出在中間:2臺服務器之間轉移。網絡通常是主要瓶頸。 SSIS是否與SQL服務器位於同一臺服務器上?那麼你有2個網絡連接+專用SSIS機器上可能存在的硬件瓶頸。
根據瓶頸有不同的解決方案。
如果您的網絡容量和Oracle的每個查詢的瓶頸爲1個CPU,那麼您可以水平分區數據(ID爲1到100,101到200等)。建立與Oracle的多個連接並以多個流加載數據。數據流的數量少於Oracle,SSIS或SQL Server上的CPU數量(其數量更小)。
Oracle和SQL的服務器位於不同的計算機上。我的電腦具有必要的容量和SQL命令filtré最好,包括indice。謝謝! – 2015-04-01 15:35:43
如果我閱讀您的評論,因爲兩臺服務器和您的計算機在至少1個資源(IO,RAM,CPU線程 - 不是全部CPU!)上都沒有以最大容量運行,那麼您的網絡就是瓶頸。 SSIS包中有批量大小的默認限制。檢查他們。如果你想讓它更快 - 你需要找到瓶頸。 – Stoleg 2015-04-02 10:28:10
它的哪個部分導致它變慢? – 2015-04-01 15:26:50