Windows 2008 で DB2 9.7.5 LUW を実行しています。WAN 経由で MS SQL 2008 サーバーから 1 時間ごとにデータを転送しています。MS SQL からデータを読み取り、データを解析して DB2 の作業テーブルにバッチ挿入し、DB2 で作業テーブルのデータをマスター テーブルにマージします。マージが完了したら、作業テーブルをクリアして次のロードに備えます。ログ ファイルが非常に大きいことに気付きました。db セッションはデータ交換中に開いたり閉じたりするため、一時テーブルは適していないため、作業テーブルを使用します。データは私が作ったJavaアプリで転送されます。
作業テーブルのトランザクションをログに記録する必要はありません。IBM のこの記事を読んだところ、テーブルが作成されたときと同じワーク ユニットでロギングが行われないことがわかりました。
CREATE TABLE...NOT LOGGED INITIALLYとALTER TABLE...NOT LOGGED INITIALLYを使用すると本当に機能しますか? テーブルを作成したら、最初のコミット後にロギングが開始されることを理解していますか?
ログに記録されていないテーブルを毎回作成し、ログに記録されていないテーブルを変更してクリアする必要がありますか? より良い方法はありますか?