私のアプリは、テーブルを結合する複雑な SQL クエリの結果である 1,000 万行をバッチ処理する必要があります。
結果セットを反復し、反復ごとに 100 を読み取る予定です。
ビジー状態の OLTP 本番 DB でこれを実行し、ロックを回避するには、 READ UNCOMMITTED 分離レベルでクエリを実行することにしました。
DB書き込みの邪魔にならないようにクエリを取得しますか? 行/テーブルのロックを回避しますか?
私の主な懸念は、クエリが他の DB アクティビティをブロックしていることです。その逆についてはあまり関心がありません。
補足:
1. 履歴データを読み取るため、コミットされていないデータに遭遇する可能性は低いです。私なら大丈夫です。
2. 反復プロセスには数時間かかる場合があります。DB 接続は、このプロセスを通じて開いたままになります。
3. このような同時バッチ インスタンスは最大で 2 つです。
4. 行の重複を許容できます。(コミットされていない読み取りの製品による)。
5. ターゲット DB は DB2 ですが、他の DB ベンダーにも適合するソリューションが必要です。
6. スナップショット分離レベルは、サーバー メモリのクリアに役立ちますか?