一,資料流設計優化
資料流有兩個特性:流和在記憶體緩衝區中處理資料,根據資料流的這兩個特性,對資料流進行優化。
1,流,同時對資料進行提取,轉換和載入操作
流,就是在source提取資料時,轉換元件處理資料,同時destination載入資料,資料在不同元件之間,同時被處理。
所有的rdbms操作都是同步的,基於集合的操作要求在將資料用於其他目的之前,該操作必須完成,這是由事務的原子特性決定的,然後資料流有流的特性,當資料流通過pipeline時,資料流task可以並行地處理鏈結,查詢以及其他轉換操作。在設計data flow時,要充分利用流的特性,限制同步過程。
例如,執行insert語句向table1中插入資料,然後再執行update語句更新table1,這意味著,直到insert指令碼完成之前,是不能執行update語句的,insert 和 update 語句是同步的。
優化的設計方案是;設計乙個資料流來實現與insert 語句相同的邏輯,同時使用轉換元件實現與update語句相同的邏輯。
這種設計方案不會使用tsql的insert 和 update語句,但是使用data flow task的source,conversion 和 destination,充分利用了資料流的流的特性。在資料提取的同時,轉換元件對資料流進行轉換,實現資料的「insert」和「update」同時進行,減少整體的處理時間。
有時,使用rdbms會更快,例如,如果表中有合適的index,使用order by 子句對資料進行排序,會比ssis 排序轉換要快很多。
2,ssis engine使用記憶體緩衝區來暫時儲存資料流
ssis engine使用記憶體緩衝區來暫時儲存資料流,對駐留在記憶體中的資料執行大多數的轉換操作,這使得ssis的資料處理效率非常高,應避免ssis將資料流·駐留在disk或其他io速度非常低的儲存介質上。
當server記憶體不足時,ssis就將緩衝區複製到disk中,disk io的速度遠低於ram的io 速度,這會導致package的執行速度將大大降低,其中最密集的記憶體轉換時阻塞和半阻塞轉換。所以,必須監控阻塞和半阻塞轉換的記憶體使用情況,避免出現記憶體過低的情況。
二,資料流轉換優化
1,緩衝區和執行樹
針對資料流中的每個執行樹,都使用了乙個不同的緩衝區配置檔案,這意味著執行樹下游的元件可能會根據處理邏輯的不同而需要不同的column set。因為資料流的緩衝區的效能直接和緩衝區的行寬相關聯,窄緩衝區可以容納更多的資料行,從而允許更高的資料流吞吐量。
上游執行樹所使用的columns可能並不是下游執行樹所需要的,當執行樹中的列不在被任何下游執行樹使用時,ssis會提供相應的警告。每乙個警告表示某一列在下游元件中不再被使用,英愛在初始使用後,從pipeline中刪除。任何非同步轉換輸出的元件,都可以選擇刪除輸出中的column。
2,engine thread
通過為資料流增加更多的執行執行緒,提高cpu的利用率。將資料流屬性enginethreads屬性的值設定為大於執行樹的數量和元件的數量,從而確保ssis有足夠的執行緒可供使用。
SSIS之資料流任務
資料流任務主要用於執行資料流以提取 轉換 載入源資料。乙個包中可以有多個資料流任務,也可以包含零個資料流任務。下面關係圖顯示含有乙個資料流任務的包 了解資料流任務後,我們就簡要的學習一下如何建立資料流任務。在工具箱中雙擊資料流任務控制項或則將其拖放到控制流頁面中。如圖 你可以根據需求來修改資料流任務...
SSIS中的容器和資料流 資料目的
在data flow中destination從資料來源或者資料處理流程中接收資料。在ssis中資料可以匯入到任何ole db支援的資料來源,平面檔案或者analysis service中的資料。和資料來源一樣destinations也通過連線管理器來連線,不同之處是有乙個資料對映介面如圖4 11。圖...
SSIS 剖析資料流之 連線和查詢轉換
在ssis的資料流元件中,ssis引擎使用merge join元件和 lookup元件實現tsql語句中的inner join 和 outer join 功能,lookup查詢元件的功能更類似tsql的exists關鍵字,只檢查資料是否存在。在ssis引擎中,任何流經資料流 data flow 元件...