並行提高oracle資料匯入速度

來源:互聯網
上載者:User

標籤:oracle   資料匯入   並行   提高   

近期有一個行業項目,需要把較大資料從檔案中匯入到oracle。

我們使用oracle的sqlldr匯入資料,當資料量較大時匯入的時間過長:匯入一張8千萬條記錄的表需要2.5個小時,太慢了。

後來採用了sqlldr並行匯入的方式將時間縮短到了0.8小時,這裡記錄一下使用過程。

思路

    將要匯入的資料檔案拆分成10份,然後使用多任務並存執行對應資料份數的sqlldr命令(當然也就需要同樣數量的control檔案),多個用戶端同時往資料庫中匯入資料。

這裡有兩點比較重要,1、如何自動產生若干條sqlldr命令和若干個control檔案(一個個寫有點累);2、如何同時並存執行(一個個去執行就更累了)。

這裡藉助了集算器這個工具完成自動產生命令和控制檔案,再並存執行。

實現步驟主程式

    負責任務控制,任務分配、調用子程式。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/45/C5/wKioL1PrA_ni7olrAAEtq8yTtOs482.jpg" style="float:none;" title="2014-08-13_141422.jpg" alt="wKioL1PrA_ni7olrAAEtq8yTtOs482.jpg" />



子程式

     產生具體control檔案和sqlldr命令,並執行匯入命令完成資料載入

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/45/C3/wKiom1PrAuKgPbctAAGgb9EpE2Y398.jpg" title="2014-08-13_141433.jpg" style="float:none;" alt="wKiom1PrAuKgPbctAAGgb9EpE2Y398.jpg" />

【注】這裡使用了集算器的並行機制來同時執行多個sqlldr命令;使用system函數調用系統命令。

實際效果

    由於是程式控制的並行任務,所以可以根據實際需要設定並行任務數,將機器效能發揮到最優。

記錄了不同並行數情況下sqlldr匯入速度,總體是呈線性增長的,並發任務越多,匯入速度越快。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/45/C5/wKioL1PrA_vg5lZIAACehW8v0Y8881.jpg" title="2014-08-13_141443.jpg" style="float:none;" alt="wKioL1PrA_vg5lZIAACehW8v0Y8881.jpg" />

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.