2017-07-07 60 views
0

我有一個方案,其中SSIS(2008)包具有在ForEach容器內運行的數據流轉換(DFT)。SSIS查找轉換緩存工作

DFT從SQL服務器表中獲取源數據,並使用高速緩存管理器將高速緩存文件數據加載到查找轉換(完全高速緩存機制)中以查找潛在的匹配,並且轉儲相應的匹配\不匹配結果到一個sql服務器表。

問題 1.對於下一次迭代,它是否會重新加載緩存以進行後續查找任務的查找轉換,還是會使用前一次迭代期間加載的相同緩存結果?

  1. 如果不是,最好是對迭代運行的DFT使用高速緩存查找機制嗎?

  2. 除了完全在SQL Server中實現DFT邏輯之外,什麼是最好的解決方案?

任何指針將有很大的幫助。

+0

您正在循環播放源代碼。你的源查詢如何與循環結果鏈接?這一點可能有助於建議替代 –

+0

每個循環的源查詢更改,而查找參考數據對於每個循環都保持不變。對於查找轉換,我使用高速緩存連接管理器作爲連接類型。 –

回答

0

對於下一次迭代,它會重新加載緩存以進行後續查找任務的查找轉換,還是會使用之前迭代期間加載的相同緩存結果?

- >它將被重新加載。

如果不是的話,最好是對迭代運行的DFT使用高速緩存查找機制嗎?

- >好問題。如果可能,更好的選擇是在DFT外部填充該緩存。

除了完全將DFT邏輯實現到SQL Server之外,什麼是最好的解決方案?

- >使用緩存管理器的基本思想是能夠在需要時跨多個DFT重用它。如果它在DFT內被使用,那麼它就會失敗。這樣做可能會獲得部分性能優勢,但它不會增加使用Lookup本身的價值。

+0

感謝您的回覆,但我想知道如何在DFT之外加載緩存,因爲查找轉換僅在DFT內部可用。 –

+0

此外,對於每次迭代,DFT都將緩存文件(存儲在物理驅動器上)中的數據通過緩存連接管理器讀取到查找轉換的緩存中。有沒有更好的選擇? –

+0

我的意思是說,通過使用主查詢來獲取一組健康的記錄,以便在單個數據流任務中根據需要查找(或)使用盡可能多的數據源,將您的緩存文件填充到Foreach循環容器外部合併/聯合並填充緩存。通過這樣做,在DFT中查找將變得簡單快速。話雖如此,如果您在循環任務或包中的單個或多個DFT中沒有使用此緩存連接管理器進行多個查找,那麼它不值得使用它。 – VKarthik