2007年06月20日(水)
[Oracle] exp/impとexpdp/impdbのパフォーマンス比較
テーマ:DB-Oracle
[Oracle] exp/impとexpdp/impdbのパフォーマンス比較 Oracle 10g から Data Pump という機能が導入されました。
Oracle の従来のバージョンではデータのエクスポート/インポートを行うためにエクスポート/インポートユーティリティ(exp/imp)を使っていましたが、今後のバージョンでは Data Pump のエクスポート/インポートユーティリティ(expdp/impdp)が標準となります。
Data Pump を使うとより高速なインポート/エクスポートが可能になるということなのですが、実際どの程度速くなるものなのでしょうか?
簡単に検証してみました。
まずはエクスポートについてですが、以下の3パターンであるスキーマをエクスポートしてみました。
● exp によるエクスポート
● exp によるエクスポート(ダイレクト・パス・エクスポート)
● Data Pump の expdp によるエクスポート
結果は以下のとおりです。
expdp は exp と比べると処理時間が約半分程度で済むようです。ファイルサイズは若干小さくなるようです。
ただし、exp のダイレクト・パス・エクスポートとの比較では、わずかに速くなっているに過ぎません。
環境にも大きく依存しますので、一様にこのような結果が出るものかどうかはわかりませんが、この結果に関しては、従来方式のダイレクト・パス・エクスポートと大差はないということが言えそうです。
では、インポートはどうでしょうか。上記のエクスポートで出力されたダンプファイルを別のスキーマにインポートして簡単に検証してみました。
● imp によるインポート
● Data Dump の impdp によるインポート
結果は以下のとおりです。
impdp は imp と比べると処理時間が約 40% ほど速くなっています。
これも環境によって差はあるとは思いますが、この結果に関しては、Data Pump に優位性があるということが言えそうです。
以上、パフォーマンスに関しては上記のような差が見られましたが、Data Pump には高速化以外にもいろいろと便利な機能がありますし、従来のエクスポート/インポートユーティリティはいずれサポートされなくなる機能ですので、原則的にはパフォーマンス云々にかかわらず 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 を使うべきかと思います。
ただし、どうもバグも潜んでいそうなので動作検証もお忘れなく...^^;