パラレルのバックグラウンド・プロセス

実行の高速化のために、多くのプロセスはパラレルで実行されるように設計されています。これは複数のスレッドがあるプロセスの実行とも呼ばれます。

システムでは、データを複数のスレッドに配分する2つの戦略を提供しています。

  • スレッド・レベルのSQL Select。この戦略はスレッド・イテレータ戦略と呼ばれることもあります。この戦略では、バッチ・ジョブが主キーを使用して、各スレッドにキーの範囲を均等に配分する方法を見つけます。その後、各スレッドがレコードを選択します。この戦略では、スレッドがデータを定期的に選択しなおしてカーソルを解放し、パフォーマンスに貢献する必要があります。この戦略は好ましい方法ですが、次の条件でのみ使用できます。

    • 単一のメンテナンス・オブジェクトのデータのみが処理される場合。
    • メンテナンス・オブジェクトの主キーが、システム生成された単一の数値キーである場合。
    注意: パラメータを使用して下限および上限IDを上書きできます。詳細は、「バックグラウンド・プロセスに指定するパラメータ」を参照してください。
  • ジョブ・レベルのSQL Select。この戦略は標準コミット戦略と呼ばれることもあります。この戦略では、バッチ・ジョブで処理されるレコードのキーが最初にすべて選択され、一時表に格納されます。その後、バッチ・ジョブが各スレッドに対して、処理するキーの範囲を提供します。この戦略は、複数のメンテナンス・オブジェクトをバッチ・ジョブで処理する場合や、メンテナンス・オブジェクトの主キーに複数の部分がある場合、または主キーが数値以外の場合に使用されます。

マルチスレッドのロジックは、マスターおよびトランザクション・データの主キーが、通常はシステム生成のランダムなキーであるという事実に依存しています。さらに、データがパーティション化されている場合、主キーに基づいてパーティション化されることが想定されます。

注意: システムで提供されている各バッチ管理のメタデータの詳細摘要には、それがパラレルで実行可能かどうかが示されています。使用される戦略は、通常、詳細摘要には示されていないことに注意してください。
注意: スレッドの範囲の上書き。特定のデータの処理に長い時間を要する場合、実装にはスレッドの範囲を上書きする機能があります。たとえば、数千の契約(大企業や主要都市のアカウントなど)が設定されたOracle Utilities Customer Care and Billingの単一アカウントがあるとします。この大規模アカウントを独自のスレッドに配置し、他のアカウントは他のスレッドに配分するように、スレッドの範囲を設定できます。これを実行するには、事前に主要範囲が移入され、ステータスが「スレッド対応」(50)の適切なバッチ・スレッド・レコードを事前に作成しておく必要があります。基本製品には、バッチ・スレッド・レコードをオンラインで追加する機能がないことに注意してください。この技法の詳細は、カスタマ・サポートにお問い合せください。