優化目標主要包括如下幾方面:
1 優化平面文件
若是目標平面文件在某機器的共享目錄下,則該機器最好是專門用於文件存儲的,若是還應用於其餘非文件存儲任務,則會下降加載效率
若是Integration service運行在單節點,則可將該平面文件放置在該單節點所在本地,這樣的話,本地數據加載會大大提高效率
2 刪除索引及主鍵約束
若是目標表包含索引或主鍵約束,則會下降其加載效率,可暫時將它們刪除,待加載結束後再重建還原
若是需按期進行索引及主鍵約束的刪除和重建還原,每次運行session時可將該操做封裝至如下地方:
1) pre-load和post-load的存儲過程
2) pre-session和post-session的SQL腳本
若是必要的話,可以使用基於約束的加載(constraint-based loading)
3 增長數據庫檢查點間隔
每當數據庫執行Check Point時,session都會進行等待,所以可經過如下兩種方式減小檢查點的頻率:
1) 加大數據庫檢查點的間隔
2) 減小數據庫檢查點的數量
4 使用大容量負載(bulk load)
當insert大量數據時,使用bulk load會提高效率(可經過session的target的Target load type中配置)
bulk load時, Integration Service會忽略記錄log信息,從而提升了加載速度。但也可能所以致使數據庫沒法回滾而沒法還原數據
因此,在使用bulk load時,需事先權衡性能和數據還原的利害關係
bulk load時,可增大commit間隔來減小bulk load處理的次數,這樣可提高性能,由於數據庫每次commit以後都會開始一個新的bulk load
5 使用外部加載器
不一樣目標數據庫能夠採用不一樣的外部加載器
當目標表是Oracle時, 若是session使用多分區管道加載時,可以使用相同分區數建立目標表提高性能
6 避免死鎖
若是Integration Service在嘗試寫入目標時遇到死鎖,則死鎖隻影響同一目標鏈接組中的目標。Integration Service 仍然寫入其餘目標鏈接組中的目標
增長Integration Service用於寫入會話中目標的目標鏈接組的數量
爲會話中的每一個目標表使用不一樣的目標鏈接組,爲每一個目標實例使用不一樣的數據庫鏈接名稱
可爲每一個鏈接名稱指定相同的鏈接信息
7 增長數據庫網絡包大小
增長網絡包大小,以容許較大的數據包一次經過網絡
不一樣數據庫,增長數據庫網絡包大小的方式也不一樣
Oracle: 可在listener.ora和tnsnames.ora中設置增長數據庫服務器網絡包大小
8 優化oracle目標數據庫
當優化數據庫時,可檢查數據庫的存儲子句, 空間分配, 回滾區間以及撤回區間
主要爲如下幾點:
1) 檢查數據庫對象的存儲子句,確保數據庫表有足夠的initial和next值
2) 將表和索引數據存儲在不一樣的表空間中,最好存儲在不一樣的磁盤上
3) 確保回滾區間和撤回區間在合適的表空間中,它們最好在不一樣的磁盤
由於加載數據時,數據庫會使用回滾和撤回區間,同時回滾和撤回區間也要有合適的存儲字句
4) 優化Oracle redo log,該log用於記錄數據加載操做的,確保該log文件及其緩衝有足夠的大小(可經過init.ora查看相關屬性)
5) 當Integration Service運行在單節點且oracle數據庫實例安裝在與該節點相同機器上時,可以使用IPC協議鏈接數據庫(經過在listener.ora and tnsnames.ora設置)
使用該協議可提升鏈接效率數據庫