1

私の最後のプロジェクトでは、膨大なデータ (4,000 万行) を読み取る必要があり、行ごとにプロセスをトリガーする必要があるという要件に取り組んでいました。設計の一環として、各スレッドが Jdbc カーソルを使用して特定のパーティションのデータをフェッチするマルチスレッドを使用し、フェッチ サイズを設定しました。ただし、Prod 環境のアプリケーションでジョブを実行すると、データベースからのデータのクエリに時間がかかるため、処理が遅くなることがわかりました。

ジョブ実行の完了までに非常にタイトなタイム ラインがあったため、データが SQL Developer から csv ファイル形式でエクスポートされ、小さなファイルに分割される場所を回避する方法を考え出しました。これらのファイルはジョブに提供されます。これにより、仕事のパフォーマンスが大幅に向上し、時間通りに仕事を完了するのに役立ちました。

上記のように、データをファイルにエクスポートするために手動の手順を使用しました。このステップを自動化する必要がある場合、たとえば Java アプリからのエクスポート ステップを実行すると、以下のオプション (Web で提案されている) のいずれかが高速になります。

  1. sqlplus (sqlplus へのネイティブ呼び出しを行う Java)
  2. sqlcl 並列スプール
  3. utl_file および dbms_parallel_execute を使用した pl/sql プロシージャ

以下のリンクは上記の詳細を示していますが、統計はありません。

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9536328100346697722

現在、私はこの Oracle 環境にアクセスできないため、私の側からはテストできませんでした。また、私はアプリケーション開発者であり、DB 側の専門知識はあまりありません。そのため、以前に同様のユースケースに取り組んだことのある人、または関連する専門知識を持っている人からのアドバイスを探しています.

前もって感謝します。

4

0 に答える 0