[轉載] expdp, exp和sqluldr2 速度測試

tolywang發表於2010-06-24

  

昨天測試了一下expdp, exp和sqluldr2的效能, 測試機器為Linux, 機器主頻為3G, 測試時基本上sqluldr2的單個程式佔用了一整個CPU, 也就是CPU的主頻限制了sqluldr2和exp的速度. 以sqluldr2為參照物, 各個工具的速度對比結果如下.

expdp = (parallel degree – 1) * 2 * sqluldr2
exp direct  = 2 * sqluldr2
exp = 1 * sqluldr2

    這時發現, expdp其實是exp的升級版本, exp + direct mode + parallel, 因為要支援並行生成幾個檔案, 所以Oracle透過控制後觀的並行程式來實現, 如果檔案是生成在客戶端, 則沒有辦法控制後臺程式來並行生成檔案, 這個是expdp的檔案只能生成在伺服器端的技術原因, 並且需要Oracle內部的目錄物件來控制檔案存放位置. 另外一個原因據說是因為安全, 匯出檔案並不表示得到了資料.

    Direct模式匯出可以得到一倍的效能提升, 但查遍了google和metalink, 都沒有找到direct unload有關的OCI API函式, 只找到一堆direct load有關的OCI API. 不知道有誰對這個有所瞭解? 難道是Oracle故意不開放這部份API, 以提升將資料遷移到其他型別資料庫的成本?

    有點想搞清楚exp和expdp中的direct模式是如何程式設計的, 用以改進一下sqluldr2.

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-666039/,如需轉載,請註明出處,否則將追究法律責任。

相關文章