ushidayの日記

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

MySQL&IBMDB2iのベンチマーク

以前書いた日記の「IBMDB2i ストレージエンジン」MySQL IBMDB2iストレージエンジンで、PDOとMySQL関数でのベンチマークを、前回と同じ条件でやってみました。

もしIBM i(AS/400)上のDDSから生成した既存の物理ファイルからデータを移行するには、まず先にIBMDB2iで空のテーブルを作成しておく必要があります。( DDSからMySQLDDL変換ツール作ったら、便利そう。)
この際にファイル名を小文字にするとエラーになります。A,Oはchar or varchar、SはDecimal(p,s)の様にフィールド属性をマップする必要があります。詳しくは「RedBook」に書いて有ったと思います。
空のテーブルが出来たら、CPYFで、既存DBからMySQLへ”*MAP,*DROP”でコピーします。
既存の物理ファイル名で”#、@”とか特殊な文字を使っていると、CCSIDによって、内部コードが左右される様で、正しくSQLを投げる事が出来ませんでした。レガシーファイルは、文字数の制約もあって、記号を使っている事が多かったりします。MySQLでは、特殊記号を名前に含むのを辞めた方が無難だと思います。

  • 環境
    • i5 O/S V5R4M0
    • Zend Core 2.6.1
    • PHP 5.2.6
    • MySQL 5.1.35
  • テスト内容
    1. 200万レコードから40万レコードの抽出して読み込み
    2. データ長157(Unicodeなので前回よりも増えてます)byteの1万レコードを書き込み
    3. 「2」で書き出した、1万レコードを更新

結論からすると、insert、updateは、実用レベルだけど、大量データのselectは辛いものがあるかもしれません。インデックスなどを使ったチューニングをしているわけではないのですが、そこまで劇的に早くなるとは思えません。ただ限られたデータ量である程度のレスポンスが得られるのならば、MySQLDB2が連携して使えるという事は若干の魅力です。というか夢があります。
それより実用でイタイのは、テーブル名やフィールド名の制約の方ですね。テーブル名に制限があると、既存のOSSとかは、使えないのですし。フィールドに関しては、制約は無いですが、レガシー側は「カラム名0001」みたいな、別名が付けられてしまうので、DDLみてもフィール名判らないですし、レガシー側からすると、連携とかは関係なくなってしまいます。
下が平均的な結果です。

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

 time indexex time%
Start1264584916.89850900-0.00%
PDO & IBMDB2i Start select1264584916.898529000.0000200.00%
PDO & IBMDB2i End select1264585047.09795000130.19942194.73%
PDO & IBMDB2i Start insert1264585047.097983000.0000330.00%
PDO & IBMDB2i End insert1264585052.322249005.2242663.80%
PDO & IBMDB2i Start update1264585052.322281000.0000320.00%
PDO & IBMDB2i End update1264585054.338448002.0161671.47%
Stop1264585054.338487000.0000390.00%
total-137.439978100.00%

MySQL関数&IBMDB2i取得件数は、411897件です。

 time indexex time%
Start1264588889.75979500-0.00%
MySQL Start select1264588889.759815000.0000200.00%
MySQL End select1264589024.20746300134.44764896.03%
MySQL Start insert1264589024.207497000.0000340.00%
MySQL End insert1264589028.688800004.4813033.20%
MySQL Start update1264589028.688830000.0000300.00%
MySQL End update1264589029.764874001.0760440.77%
Stop1264589029.764910000.0000360.00%
total-140.005115100.00%