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