iBatisによるDBアクセスおよびファイル出力をチューニングした

iBatisを使って大量(千万件程度)のデータをDBから取得し、編集してCSVファイル出力するコードのチューニングを行った。
ポイントは以下の3点。

  • メモリに乗りきらないため、RowHandlerを用いて1行ずつ処理する
  • 単純に1行ずつ取得ではDBアクセスの負荷が高くなるため、SQLMapでfetchSizeを10000程度に指定
  • ファイルIOの量を削減するために、10000行程度バッファリングしてから書き込むように工夫

以上により、かなりの性能改善が得られた。