溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SSIS 數(shù)據(jù)流優(yōu)化

發(fā)布時間:2020-07-19 10:10:41 來源:網(wǎng)絡(luò) 閱讀:381 作者:lzwxx 欄目:網(wǎng)絡(luò)安全

一,數(shù)據(jù)流設(shè)計優(yōu)化

數(shù)據(jù)流有兩個特性:流和在內(nèi)存緩沖區(qū)中處理數(shù)據(jù),根據(jù)數(shù)據(jù)流的這兩個特性,對數(shù)據(jù)流進行優(yōu)化。

1,流,同時對數(shù)據(jù)進行提取,轉(zhuǎn)換和加載操作

流,就是在source提取數(shù)據(jù)時,轉(zhuǎn)換組件處理數(shù)據(jù),同時destination加載數(shù)據(jù),數(shù)據(jù)在不同組件之間,同時被處理。

所有的RDBMS操作都是同步的,基于集合的操作要求在將數(shù)據(jù)用于其他目的之前,該操作必須完成,這是由事務(wù)的原子特性決定的,然后數(shù)據(jù)流有流的特性,當數(shù)據(jù)流通過pipeline時,數(shù)據(jù)流task可以并行地處理鏈接,查詢以及其他轉(zhuǎn)換操作。在設(shè)計Data Flow時,要充分利用流的特性,限制同步過程。

例如,執(zhí)行insert語句向Table1中插入數(shù)據(jù),然后再運行update語句更新Table1,這意味著,直到insert腳本完成之前,是不能運行update語句的,insert 和 update 語句是同步的。

優(yōu)化的設(shè)計方案是;設(shè)計一個數(shù)據(jù)流來實現(xiàn)與insert 語句相同的邏輯,同時使用轉(zhuǎn)換組件實現(xiàn)與Update語句相同的邏輯。

這種設(shè)計方案不會使用TSQL的insert 和 update語句,但是使用Data flow Task的Source,conversion 和 destination,充分利用了數(shù)據(jù)流的流的特性。在數(shù)據(jù)提取的同時,轉(zhuǎn)換組件對數(shù)據(jù)流進行轉(zhuǎn)換,實現(xiàn)數(shù)據(jù)的“insert”和“Update”同時進行,減少整體的處理時間。

有時,使用RDBMS會更快,例如,如果表中有合適的index,使用order by 子句對數(shù)據(jù)進行排序,會比SSIS 排序轉(zhuǎn)換要快很多。 

2,SSIS Engine使用內(nèi)存緩沖區(qū)來暫時存儲數(shù)據(jù)流

SSIS Engine使用內(nèi)存緩沖區(qū)來暫時存儲數(shù)據(jù)流,對駐留在內(nèi)存中的數(shù)據(jù)執(zhí)行大多數(shù)的轉(zhuǎn)換操作,這使得SSIS的數(shù)據(jù)處理效率非常高,應(yīng)避免SSIS將數(shù)據(jù)流·駐留在Disk或其他IO速度非常低的存儲介質(zhì)上。

當Server內(nèi)存不足時,SSIS就將緩沖區(qū)復(fù)制到Disk中,Disk IO的速度遠低于RAM的IO 速度,這會導(dǎo)致package的運行速度將大大降低,其中最密集的內(nèi)存轉(zhuǎn)換時阻塞和半阻塞轉(zhuǎn)換。所以,必須監(jiān)控阻塞和半阻塞轉(zhuǎn)換的內(nèi)存使用情況,避免出現(xiàn)內(nèi)存過低的情況。

二,數(shù)據(jù)流轉(zhuǎn)換優(yōu)化

1,緩沖區(qū)和執(zhí)行樹

針對數(shù)據(jù)流中的每個執(zhí)行樹,都使用了一個不同的緩沖區(qū)配置文件,這意味著執(zhí)行樹下游的組件可能會根據(jù)處理邏輯的不同而需要不同的Column set。因為數(shù)據(jù)流的緩沖區(qū)的性能直接和緩沖區(qū)的行寬相關(guān)聯(lián),窄緩沖區(qū)可以容納更多的數(shù)據(jù)行,從而允許更高的數(shù)據(jù)流吞吐量。

上游執(zhí)行樹所使用的columns可能并不是下游執(zhí)行樹所需要的,當執(zhí)行樹中的列不在被任何下游執(zhí)行樹使用時,SSIS會提供相應(yīng)的警告。每一個警告表示某一列在下游組件中不再被使用,英愛在初始使用后,從Pipeline中刪除。任何異步轉(zhuǎn)換輸出的組件,都可以選擇刪除輸出中的column。

2,Engine Thread

通過為數(shù)據(jù)流增加更多的執(zhí)行線程,提高CPU的利用率。將數(shù)據(jù)流屬性EngineThreads屬性的值設(shè)置為大于執(zhí)行樹的數(shù)量和組件的數(shù)量,從而確保SSIS有足夠的線程可供使用。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI