次の要件があります-
1.テーブルを
クエリし、何らかの条件に一致する約2万行を選択する必要があります。
2.これらのレコードを処理し、いくつかのフィールドを変更します。
3.変更されたレコードで同じテーブルを更新します。
マルチスレッドを使用して SELECT、PROCESS、および UPDATE レコードをバッチ処理するにはどうすればよいですか? ベストプラクティスはありますか? 使用する最適な糸数は? 代替アプローチはありますか?
! 使用される行は互いに独立しています
次の要件があります-
1.テーブルを
クエリし、何らかの条件に一致する約2万行を選択する必要があります。
2.これらのレコードを処理し、いくつかのフィールドを変更します。
3.変更されたレコードで同じテーブルを更新します。
マルチスレッドを使用して SELECT、PROCESS、および UPDATE レコードをバッチ処理するにはどうすればよいですか? ベストプラクティスはありますか? 使用する最適な糸数は? 代替アプローチはありますか?
! 使用される行は互いに独立しています
もちろん、処理している行が互いに完全に独立していない限り、並行スレッドでの処理はおそらくパフォーマンスに悪影響を与えることに気付くでしょう。
右?
とにかく、私の最善のアドバイス:
1)絶対に必要な場合を除き、複数のスレッドを使用しないでください
2)それでも、「バッチ」が独立していない限り、複数のスレッドを使用しないでください(1つのバッチ内で、別のバッチが保持するロックを待機する必要はありません)
3) 単一のバッチとして、クエリ、処理、および更新を一緒に実行します。
...そして、最も重要な...
4) 可能な限りストアド プロシージャを使用します。