SQL2005的SSIS與Oracle的遷移性能項(xiàng)目中存在一部分?jǐn)?shù)據(jù)遷移的工作,說白了就是從老的系統(tǒng)中將數(shù)據(jù)倒換的新的系統(tǒng)模型中,老系統(tǒng)的數(shù)據(jù)來源比較復(fù)雜多樣,新的自然是OracleArray.2。 本來這也就是一次性工作,用SQL自然是最快的方式,不論是開發(fā)還是數(shù)據(jù)傳輸?shù)乃俣???墒羌追狡吹浇缑?,希望這是一個成型的工具,沒辦法,甲方就是上帝。 公司原來也有一個遷移工具,可是只能適用于表對表的倒換,復(fù)雜一些無能為力,而且數(shù)據(jù)還巨慢,用過的人都是對它無語。 從新開發(fā),不說花費(fèi)和效果,光是時間也不行。沒辦法,只好看看現(xiàn)在流行的ETL的工具。 市場前列毋庸置疑,肯定是Informatia 和 DataStage. Informatia沒有,只好看看DataStage是否能適應(yīng)現(xiàn)在的功能要求。不想,雖然是圖形界面,可使用起來一點(diǎn)也不容易,而且安裝后,Windows下居然不能脫離域環(huán)境,而且不是Server版本的Windows還不能運(yùn)行Paralle Job。郁悶無比。 試了兩天后,暫時放下。Microsoft的易用性比功能強(qiáng)大更吸引我。試試SQL Server 2005中的SSIS,號稱企業(yè)級的ETL。 一用之后呢,沒想還真有點(diǎn)喜歡上了它,從介紹的和界面上看一點(diǎn)也不比DataStage的功能少,性能,哈,下面就是我要說得了。 ETL工具最慢的部分都是L這一部分,按照一般的說法能占到總體時間的五分之四,所以這是關(guān)鍵。 測試也不算復(fù)雜,就是同樣的數(shù)據(jù)抽取、轉(zhuǎn)化、然后加載用不同的驅(qū)動分別跑一遍,目的庫已經(jīng)確定是Oracle,所以也沒有太大的余地了。 在SSIS中,有兩個驅(qū)動可以連接Oracle數(shù)據(jù)庫,一個是Microsoft OLEDB Provider for Oracle,另外一個是Oracle Provider for OLEDB 不測不知道,還真長了不少見識。 ![]() 同一機(jī)器,同一數(shù)據(jù)源,同一結(jié)果,兩者間還真有不少區(qū)別。 首先是速度(連續(xù)三次): Microsoft OLEDB Provider for Oracle 1分37 1分32 1分30 Oracle Provider for OLEDB 1分10 1分07 1分02 在速度上 Oracle Provider for OLEDB 基本符合 1分3萬條左右,而Microsoft OLEDB Provider for Oracle 1分鐘只有2萬條左右。 照這樣看,答案似乎也就出來了,Oracle Provider for OLEDB也就成了不二選擇。 且慢,我還沒有說明為什么選擇25萬條記錄而不是別的數(shù)量的數(shù)據(jù)呢。 這就不得不說說內(nèi)存的使用:未啟動數(shù)據(jù)遷移時即停留在VS.Net設(shè)計(jì)界面時,內(nèi)存已使用了7Array0M左右,而我機(jī)器的物理內(nèi)存也就8Array6M。 運(yùn)行開始后,25萬條記錄下Microsoft OLEDB Provider for Oracle 平均在1G左右,而Oracle Provider for OLEDB乖乖得不得了,鐵定在1.25G以上,一次還在1.3G。更離譜的是,原數(shù)據(jù)表中共有近100萬條記錄,Microsoft OLEDB Provider for Oracle在內(nèi)存峰值1.5G左右可以順利完成,而Oracle Provider for OLEDB在內(nèi)存使用一旦突破1.3G往上一些,就開始不停提示內(nèi)存不足,不在安心的遷移數(shù)據(jù)了,或者干脆顯示為紅色,報(bào)一些莫名的錯誤。 這就讓人兩難了,一個速度快了那么50%,可確是一個內(nèi)存消耗大戶,有沒有止境,我這破機(jī)器也無從得知。 另外一個速度慢,可卻節(jié)儉持家,窮人也照顧到了,哈。感覺好這有點(diǎn)像Oracle和MS的企業(yè)風(fēng)格,一個走高端,為了需要的指標(biāo)可以不計(jì)成本,窮人靠邊;另一個呢,還不錯,雖然也越來越來不鳥沒錢的人,可還做得不太顯眼。 最后了,同樣的數(shù)據(jù)源(Microsoft OLEDB Provider for Oracle驅(qū)動),將目的庫換成SQL Server 2005,驅(qū)動為SQL Native Client,同樣的數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)換,Array8.Array萬條記錄中11.1萬條入庫,靠1分12完事,打開FastLoad,58秒搞定。而且都只是第一次運(yùn)行,相信如果多運(yùn)行幾次后,結(jié)果應(yīng)該更好。別說,自家孩子真就不一樣,別人的家的沒法比。 由于數(shù)據(jù)庫驅(qū)動接觸并不多,希望那個大蝦指點(diǎn)一下,能幫忙給找一個Windows下Oracle驅(qū)動可以媲美與SQL Native Client的,先謝了。 |
|