私は、いくつかのシステムで DB 相互作用を行うインターフェースに取り組んでいます。私の仕事の一環として、ソース データベースにクエリを実行し、いくつかのプロシージャを呼び出し、参照カーソルでデータを取得し、宛先データベースにデータを入力することになっています。
データ量が膨大になる可能性があるため、宛先データベースでマルチスレッドを使用してプロシージャを呼び出しています。たとえば、ロードされると想定されるエントリの総数が 100 万の場合、宛先データベースで、プロシージャはそれぞれ 100K レコードで 10 回呼び出されます。
この配置は、ソース データベースのデータ ボリュームが膨大な場合 (例: 200 万を超えるエントリ) を除いて、正常に機能しています。レコードを処理するために約 20 GB のヒープ スペースを設定しましたが、プログラムがヒープ メモリ エラーで失敗します。
ソース データベースから並列モードでデータをクエリする方法があるかどうかを知りたい (たとえば、ソース ストアド プロシージャから合計 200 万件のレコードがフェッチされると仮定すると、私のプログラムは最初にこのレコードのサブセットをフェッチする必要があります)そして次に進むか、そのようなものです)。
私が提案した解決策の 1 つは、データベース側を介してこの方法でレコードを送信することですが、より良い代替手段があるかどうかを知りたいです。提案してください