オペレータのインスタンスの数は、以下の例のように、オペレータが参照されているAPPLY TO文またはSELECT FROM文で(オペレータ_名前 [インスタンス数])という形式を使用して指定できます。
APPLY <DML>...TO OPERATOR (UPDATE_OPERATOR [2]...)
ジョブの適正な数のインスタンスを判断する際、Producerオペレータはスクリプトに指定したすべてのインスタンスを使用し、コンシューマは指定した数より少ないインスタンスを使用することに注意してください。 この差は、コンシューマとプロデューサではインスタンスの使い方が異なるために生じます。
- プロデューサは、すべてのインスタンス間で負荷を自動的に分散し、データをできるだけ速くデータ ストリームに送り込みます。
- デフォルトでは、コンシューマはインスタンスを必要な数だけ使用します。 1つのインスタンスで、データ ストリームのデータをプロデューサが書き込む速度と同等に読み取り、処理できる場合は、他のインスタンスは使用されません。 1つのインスタンスではProducerオペレータの速さに追いつかない場合に、2つ目のインスタンスが使用されます。
コマンド ライン オプションの-Cは、周期的なラウンド ロビン方式でProducerオペレータ、およびデータ ブロックを送信する基本データ ストリームをターゲット Consumerオペレータに通知することによってデフォルト動作を上書きし、 Consumerオペレータへのより均等なデータ分散を実現します。
オペレータ インスタンスを指定する際には、以下を考慮に入れてください。
- インスタンス数を指定しない場合、デフォルトはオペレータごとに1インスタンスです。
- さまざまな値を試してください。特定のオペレータに対して1つまたは2つのインスタンスのみを指定することから始めてみます。
- Teradata PTは、指定された数のインスタンスを開始しますが、必要な分しか使用しません。
- 必要以上にインスタンスを作成しないでください。インスタンスによってシステム リソースが消費されます。
- Teradata PTログ ファイルを参照します。このログ ファイルでは、各インスタンスで処理されたデータの量を示す統計情報が表示されます。 オペレータのインスタンスの中に活用されていないものが見つかったら、インスタンスの数を減らします。 すべてのインスタンスが使用されている場合は、数を増やしてジョブの実行が改善されるかどうかを確認します。
- インスタンス数が利用可能なセッション数を超える場合、ジョブはアボートされます。 したがって、複数のインスタンスを指定する場合は、インスタンスごとに1つ以上のセッションが確保される十分高い値にMaxSessions属性が設定されていることを確認してください。
- ジョブの実行後に、セッションとインスタンスのバランス化の方策で説明する評価基準を使用して、オペレータ インスタンス数を調整して最適化します。