TFDBatchMoveを利用して大量のデータを移行すると、時間がかかることがある

提供: Support
移動先: 案内検索

問題

RAD Studio/C++Builder/Delphi XE7のバージョンから実装されたTFDBatchMoveTFDBatchMoveDataSetReaderTFDBatchMoveDataSetWriterの組み合わせで、移行元のデータベースから移行先のデータベースへ大量のデータを移行すると、時間がかかることがあります。

(例えば、ある報告では1テーブル(レコード件数は、約50万件)のデータを移行するために、約120分かかったという事例がありました。)

解決

TFDBatchMoveSQLReaderTFDBatchMoveSQLWriterを利用しましょう。

そして以下のパラメータを移行する実行環境やレコード件数に応じて変更してください。

例えば、CommitCount=200000に設定すると、トランザクションが実行され、20万件のデータを移行先のデータベースへ書き込む度にコミットされます。このプロパティの値を大きく設定し、コミット回数を減らすことによって、実行パフォーマンスが向上することが期待できます。さらにデータの移行は、一回にフェッチするレコード数も影響するため、RowsetSizeプロパティも併せて変更すると、より実行速度の向上が見込めます。

但し、上記2つのパラメータを大きい値へ設定しすぎると、逆に遅くなるケースもありますので、ご注意ください。その際は、環境に合わせた値を調整してください。