読者です 読者をやめる 読者になる 読者になる

#chiroito ’s blog

Java を中心とした趣味の技術について

空データか否かによるinsert実行時間の推移

Seasar Java 検証

概要

 読取元のテーブルからデータを取得、データの加工し、書込み先のテーブルへ書き込む処理の中で、各カラムに保存されているデータがnullか否かにより実行時間にどれくらいの変化があるかカラム数を増加させることにより検証します。実装方法は「単発のinsertをレコード数繰り返す」、「bulk insert」、「insert-select」のケースで検証します。

環境

Databaseサーバ
  • Oracle VM VirtualBox version.4.0.8
  • Oracle Enterprise Linux release 5.5
  • Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
プログラム実行環境(APサーバの代わり)
  • Windows 7 Ultimate
  • Eclipse Java EE IDE for Web Developers.Helios Service Release 1
  • S2JDBC
  • Java 6.0 update 18

結果

 カラム数は100、400、700、1000で行いました。レコード数は5000件固定です。

 実行時間は3回実行した結果の平均を取っています。取得結果の中で異常な結果は特にありませんでした。

 単発でinsertを実行する場合は、ほぼ同一の結果となっています。bulk-insertでは僅かではありますがデータがnullの方が早くなります。insert-selectではデータがnullの方がはるかに早くなっていきました。

データが空か否かでカラム数を変化させた実行時間とその比率1(縦軸:実行時間(秒)、実行時間比率、横軸:カラム数)


データが空か否かでカラム数を変化させた実行時間とその比率2(縦軸:実行時間(秒)、実行時間比率、横軸:カラム数)


データが空か否かでカラム数を変化させた実行時間とその比率3(縦軸:実行時間(秒)、実行時間比率、横軸:カラム数)