ushidayの日記

主に「IBMi」のメモに・・・

PDOとDB2関数のベンチマーク

PDOとDB2関数で、大きな違いは出ないと伺ってはいたのですが、やらないと気が済まないもので、ベンチマークを比較しててみました。
PDOの方で、途中DBに結果が、反映されなくて、気付いたのですが、Write,Update処理にジャーナルが必要そうです。昔MSとかのODBCもそうだった記憶があります。「create schema」と「create table」でやっていれば、問題ないですけど、既存ライブラリとかPFの世界だと、ジャーナル付けるのが面倒だったりします。ジャーナルレシーバーの管理とか...。結局トランザクション処理が必要なケースは、いずれにしても必要なのですが...。

  • テスト内容
    1. 200万レコードから40万レコードの抽出して読み込み
    2. データ長102byteの1万レコードを書き込み
    3. 「2」で書き出した、1万レコードを更新

何回か実行した下記が、平均的な結果です。殆ど差が出なかったです。ただ”Update”に関してPDOの方が、少しよく感じられました。ジャーナル処理したファイルだとDB2関数のレスポンスに何かあるのかな?ジャーナルなしでやるとまた違う結果になるかもしれません。状況などによって今回の結果だけが全てではないですし。ただPDOのレスポンスが実用に十分使えるとは感じられました。

  • DB2関数の結果

DB2取得件数は、411897件です。

 time indexex time%
Start1264402983.38512200-0.00%
DB2 Start select1264402983.385144000.0000220.00%
DB2 End select1264402983.646742000.2615985.44%
DB2 Start insert1264402983.646805000.0000630.00%
DB2 End insert1264402986.367826002.72102156.63%
DB2 Start update1264402986.367878000.0000520.00%
DB2 End update1264402988.189578001.82170037.92%
Stop1264402988.189624000.0000460.00%
total-4.804502100.00%

  • PDOの結果

PDO取得件数は、411897件です。

 time indexex time%
Start1264402976.43134000-0.00%
PDO Start select1264402976.431362000.0000220.00%
PDO End select1264402976.688490000.2571286.54%
PDO Start insert1264402976.688532000.0000420.00%
PDO End insert1264402979.888355003.19982381.43%
PDO Start update1264402979.888395000.0000400.00%
PDO End update1264402980.360675000.47228012.02%
Stop1264402980.360720000.0000450.00%
total-3.929380100.00%