2014年10月29日

大量データのInsertの高速化について

PostgreSQLに大量データ(例:100000件)のInsertを行う際、Javaプログラムの実装方法により検証結果(処理速度)に大きな差がありました。
後学のためにメモしておきます。
なお、(意図的に)パフォーマンスが出難い検証環境を利用しているため、あくまで 処理速度 ではなく 処理速度の差(傾向) に着目して下さい。

検証環境(プログラム)
Java SE : 7u60
JDBCドライバ : 4.1 (postgresql-9.3-1102.jdbc41.jar)
※ Eclipse 上で実行した。

検証環境(DB)
PostgreSQL : 9.3.5 (postgresql-9.3.5.tar.gz)
※ Eclipse と同じホストに起動した仮想環境( VMware Player / CentOS / コア数:2 )で実行した。
※ postgresql.conf に listen_addresses = '*' 、 port = 5432 を追記した、 pg_hba.conf に host... を追記した、その他は初期値のまま(=チューニングも未実施のまま)。

【検証プログラム】

【検証DB】

【検証結果(処理速度)】

■1回目
executeUpdate1 : 36258 millis
executeUpdate2 : 28148 millis
executeUpdate3 : 3920 millis
executeBatch : 5519 millis

■2回目 (1回目以降にInsertしたデータはそのまま)
executeUpdate1 : 37257 millis
executeUpdate2 : 30075 millis
executeUpdate3 : 3776 millis
executeBatch : 7526 millis

■3回目 (1回目以降にInsertしたデータはそのまま)
executeUpdate1 : 38461 millis
executeUpdate2 : 31529 millis
executeUpdate3 : 6679 millis
executeBatch : 9331 millis

■4回目 (1回目以降にInsertしたデータはそのまま)
executeUpdate1 : 37821 millis
executeUpdate2 : 29858 millis
executeUpdate3 : 8238 millis
executeBatch : 12216 millis

■5回目 (1回目以降にInsertしたデータはそのまま)
executeUpdate1 : 40899 millis
executeUpdate2 : 33941 millis
executeUpdate3 : 12638 millis
executeBatch : 21184 millis

posted by red at 23:44| Comment(0) | TrackBack(0) | Java | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック