Archive Redo Blog

DBエンジニアのあれこれ備忘録


テーマ:
[Oracle] exp/impとexpdp/impdbのパフォーマンス比較 Oracle 10g から Data Pump という機能が導入されました。

Oracle の従来のバージョンではデータのエクスポート/インポートを行うためにエクスポート/インポートユーティリティ(exp/imp)を使っていましたが、今後のバージョンでは Data Pump のエクスポート/インポートユーティリティ(expdp/impdp)が標準となります。

Data Pump を使うとより高速なインポート/エクスポートが可能になるということなのですが、実際どの程度速くなるものなのでしょうか?

簡単に検証してみました。


まずはエクスポートについてですが、以下の3パターンであるスキーマをエクスポートしてみました。

● exp によるエクスポート
exp system/manager@orcl owner=USER1 file=c:\oracle\exp.dmp log=c:\oracle\exp.log

● exp によるエクスポート(ダイレクト・パス・エクスポート)
exp system/manager@orcl owner=USER1 file=c:\oracle\exp_d.dmp log=c:\oracle\exp_d.log direct=y

● Data Pump の expdp によるエクスポート
expdp system/manager@orcl schemas=USER1 directory=DUMP_DIR dumpfile=expdp.dmp logfile=expdp.log


結果は以下のとおりです。

エクスポート方法 処理時間(秒) ファイルサイズ(MB)
exp 83 140
exp(direct=y) 47 137
expdp 39 117

expdp は exp と比べると処理時間が約半分程度で済むようです。ファイルサイズは若干小さくなるようです。

ただし、exp のダイレクト・パス・エクスポートとの比較では、わずかに速くなっているに過ぎません。

環境にも大きく依存しますので、一様にこのような結果が出るものかどうかはわかりませんが、この結果に関しては、従来方式のダイレクト・パス・エクスポートと大差はないということが言えそうです。


では、インポートはどうでしょうか。上記のエクスポートで出力されたダンプファイルを別のスキーマにインポートして簡単に検証してみました。

● imp によるインポート
imp system/manager@orcl fromuser=USER1 touser=USER2 file=c:\oracle\exp.dmp log=c:\oracle\imp.log

● Data Dump の impdp によるインポート
impdp system/manager@orcl remap_schema=USER1:USER2 directory=DUMP_DIR dumpfile=expdp.dmp logfile=impdp.log

結果は以下のとおりです。

インポート方法 処理時間(秒)
imp 259
impdp 158

impdp は imp と比べると処理時間が約 40% ほど速くなっています。

これも環境によって差はあるとは思いますが、この結果に関しては、Data Pump に優位性があるということが言えそうです。


以上、パフォーマンスに関しては上記のような差が見られましたが、Data Pump には高速化以外にもいろいろと便利な機能がありますし、従来のエクスポート/インポートユーティリティはいずれサポートされなくなる機能ですので、原則的にはパフォーマンス云々にかかわらず Data Pump を使うべきかと思います。

ただし、どうもバグも潜んでいそうなので動作検証もお忘れなく...^^;
AD
いいね!した人  |  コメント(0)

[PR]気になるキーワード