在SSIS的數(shù)據(jù)流組件中,SSIS引擎使用Merge Join組件和 Lookup組件實(shí)現(xiàn)TSQL語(yǔ)句中的inner join 和 outer join 功能,Lookup查找組件的功能更類似TSQL的Exists關(guān)鍵字,只檢查數(shù)據(jù)是否存在。在SSIS引擎中,任何流經(jīng)數(shù)據(jù)流(Data Flow)組件的數(shù)據(jù)都會(huì)被加載到服務(wù)器內(nèi)存的數(shù)據(jù)緩沖區(qū)中,數(shù)據(jù)緩沖區(qū)能夠容納的數(shù)據(jù)量決定了轉(zhuǎn)換組件的性能。

一,轉(zhuǎn)換組件的結(jié)構(gòu)

1,Lookup轉(zhuǎn)換組件有一個(gè)輸入(Input),一個(gè)查找表(或叫緩存表,引用表),映射關(guān)系和多個(gè)輸出(Output)

映射關(guān)系是指Lookup轉(zhuǎn)換組件的輸入(Input)列和查找列之間的相等關(guān)系,定義了輸入和引用表之間按照什么條件進(jìn)行匹配,相當(dāng)于定義Join子句的On條件;在創(chuàng)建映射關(guān)系時(shí),用戶需要顯式指定一個(gè)或多個(gè)映射關(guān)系,就是說(shuō),用戶需要指定哪些Input列和查找列之間具有相等關(guān)系。

萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

Lookup組件查找的過(guò)程是:對(duì)于輸入(Input)中的每一個(gè)數(shù)據(jù)行,根據(jù)映射關(guān)系,對(duì)查找表進(jìn)行全表查找;如果該數(shù)據(jù)行能夠在查找表中找到相應(yīng)的鍵值,那么該數(shù)據(jù)行匹配成功,從“Lookup Match Output” 路徑輸出到下游組件;如果不能在查找表中找到相應(yīng)的鍵值,那么該數(shù)據(jù)行匹配失敗,從“Lookup No Match Output”路徑輸出到下游組件。

由于輸入中每一個(gè)行數(shù)據(jù)都會(huì)查找整個(gè)緩存表,因此,如果將查找表數(shù)據(jù)緩存在內(nèi)存中,能夠提高Lookup組件的查找性能,Lookup轉(zhuǎn)換組件提供三種緩存模式來(lái)處理查找表的數(shù)據(jù):全部緩存在內(nèi)存,部分緩存在內(nèi)存中,每次都從數(shù)據(jù)源中讀取。如果查找表數(shù)據(jù)量少,請(qǐng)