Informatica PowerCenter是數(shù)據(jù)中心ETL設(shè)計(jì)開發(fā)主要的工具,能夠方便地從異構(gòu)的已有系統(tǒng)和數(shù)據(jù)源中抽取數(shù)據(jù),用來建立、部署、管理企業(yè)的數(shù)據(jù)倉(cāng)庫(kù),從而幫助企業(yè)做出快速、正確的決策。
Informatica對(duì)目標(biāo)表的加載方式有normal和bulk兩種加載方式(一般情況下采用normal加載方式即可)。bulk方式是Informatica提供的一種高性能的load數(shù)據(jù)方式,它利用數(shù)據(jù)庫(kù)底層機(jī)制,依靠調(diào)用數(shù)據(jù)庫(kù)本身提供的Utility來進(jìn)行數(shù)據(jù)的加載。但是在有些情況下不能采用bulk方式加載,下面介紹筆者在開發(fā)工作中采用bulk方式出現(xiàn)的問題。
抽取的字段有大字段數(shù)據(jù)類型,比如CLOB,如果不是最后一列,采用bulk加載方式導(dǎo)致抽取失敗。例如:執(zhí)行物資主題S_M_DW_MT_DW_MT_DISCUSSIONS_THREAD任務(wù),運(yùn)行后發(fā)生錯(cuò)誤,查看SESSION日 志,Database errors occurred:ORA-39778:the parallel load option is not allowed when loading lob columns。
有主鍵、索引、大數(shù)據(jù)量情況下采用bulk加載方式,抽取效率會(huì)很低。例如:執(zhí)行設(shè)備主題S_M_DW_EQP_DW_EQP_ASSET_ACTIVITY_INIT任務(wù),設(shè)置加載方式為bulk,運(yùn)行后查看SESSION日志,耗時(shí)較大。
根據(jù)SESSION日志提示可知,此加載方式不允許加載lob列,故將SESSION目標(biāo)表的加載方式更改為normal,重 新 執(zhí)行任務(wù),查看SESSION日志,任務(wù)執(zhí)行成功,數(shù)據(jù)正常。
將加載方式更改為normal重新運(yùn)行任務(wù),查看SESSION日志,性能得到很大提高。
bulk方式加載時(shí),Informatica調(diào)用Utility進(jìn)行加載,此方式將繞過數(shù)據(jù)庫(kù)的 log記錄,以此來提高數(shù)據(jù)庫(kù)加載性能。bulk方式主要是進(jìn)行大數(shù)據(jù)量Insert的操作時(shí)選用,換句話說就是不做Update。當(dāng)設(shè)置了這個(gè)選項(xiàng)后,Informatica Sever實(shí)際是調(diào)用了數(shù)據(jù)庫(kù)的bulk Utility并忽略log進(jìn)行加載的。所以在這兒對(duì)bulk方式也可進(jìn)行調(diào)優(yōu)設(shè)置,這就是需要調(diào)整的“事務(wù)提交數(shù)” 了。Commit Interval的默認(rèn)值是10000。所以,可以調(diào)大這個(gè) 值,以減少事務(wù)數(shù)(Bulk Load Transaction),提升性能。因?yàn)閎ulk方式只能用來做Insert操作。如果需要Update操作,在Session的Treat source rows as的設(shè)置上需要設(shè)置成Data Driven,當(dāng)同時(shí)選擇了兩種設(shè)置,會(huì)有什么結(jié)果呢?如果同時(shí)設(shè)置了Data Driven和bulk模式, PowerCenter Sever將自動(dòng)切換采用normal方式進(jìn)行加載。
在日常的開發(fā)中,bulk只在某些情況下可達(dá)到調(diào)優(yōu)的效果,如果使用不當(dāng),會(huì)造成不必要的麻煩。因此,如果沒有特定的需要Informatica性能調(diào)優(yōu)情況下,可將目標(biāo)表加載方式默認(rèn)設(shè)置為normal。 在Informatica PowerCenter Workflow Manger點(diǎn)擊Tools→Option→切換到 Miscellaneous,將 Target Load Type設(shè)置為normal即可。
在以下情況是不可使用bulk加載方式:
如果有大字段,像CLOB、BLOB類型,必須是數(shù)據(jù)表中最后一列,才可使用bulk加載方式,否則不能使用。
定義主鍵、外鍵、索引的情況下,bulk加載方式對(duì)于大數(shù)據(jù)量情況下抽取的效率反而會(huì)降低,而且只能做insert操作。