PDOとDB2関数のベンチマーク
PDOとDB2関数で、大きな違いは出ないと伺ってはいたのですが、やらないと気が済まないもので、ベンチマークを比較しててみました。
PDOの方で、途中DBに結果が、反映されなくて、気付いたのですが、Write,Update処理にジャーナルが必要そうです。昔MSとかのODBCもそうだった記憶があります。「create schema」と「create table」でやっていれば、問題ないですけど、既存ライブラリとかPFの世界だと、ジャーナル付けるのが面倒だったりします。ジャーナルレシーバーの管理とか...。結局トランザクション処理が必要なケースは、いずれにしても必要なのですが...。
- テスト内容
- 200万レコードから40万レコードの抽出して読み込み
- データ長102byteの1万レコードを書き込み
- 「2」で書き出した、1万レコードを更新
何回か実行した下記が、平均的な結果です。殆ど差が出なかったです。ただ”Update”に関してPDOの方が、少しよく感じられました。ジャーナル処理したファイルだとDB2関数のレスポンスに何かあるのかな?ジャーナルなしでやるとまた違う結果になるかもしれません。状況などによって今回の結果だけが全てではないですし。ただPDOのレスポンスが実用に十分使えるとは感じられました。
- DB2関数の結果
DB2取得件数は、411897件です。
time index | ex time | % | |
Start | 1264402983.38512200 | - | 0.00% |
DB2 Start select | 1264402983.38514400 | 0.000022 | 0.00% |
DB2 End select | 1264402983.64674200 | 0.261598 | 5.44% |
DB2 Start insert | 1264402983.64680500 | 0.000063 | 0.00% |
DB2 End insert | 1264402986.36782600 | 2.721021 | 56.63% |
DB2 Start update | 1264402986.36787800 | 0.000052 | 0.00% |
DB2 End update | 1264402988.18957800 | 1.821700 | 37.92% |
Stop | 1264402988.18962400 | 0.000046 | 0.00% |
total | - | 4.804502 | 100.00% |
- PDOの結果
PDO取得件数は、411897件です。
time index | ex time | % | |
Start | 1264402976.43134000 | - | 0.00% |
PDO Start select | 1264402976.43136200 | 0.000022 | 0.00% |
PDO End select | 1264402976.68849000 | 0.257128 | 6.54% |
PDO Start insert | 1264402976.68853200 | 0.000042 | 0.00% |
PDO End insert | 1264402979.88835500 | 3.199823 | 81.43% |
PDO Start update | 1264402979.88839500 | 0.000040 | 0.00% |
PDO End update | 1264402980.36067500 | 0.472280 | 12.02% |
Stop | 1264402980.36072000 | 0.000045 | 0.00% |
total | - | 3.929380 | 100.00% |