データベース設計およびデータ自体の状態に関連する変数は次のとおりです。
- データのクリーンアップ方法
- 入力ストリームへの任意のシーケンス
- 更新されるテーブルに定義されているインデックスの程度とタイプ
- 参照整合性、フォールバック、または永久ジャーナリングの使用
- トリガーの数と複雑さ
- 更新ごとにデータベースに渡される列の数
- UPSERT使用時にINSERTに更新される比率
データ関連の変数は、パック係数の大きさを決定する可能性があり、各行の処理にどの程度の労力がかかるかに影響するため、パフォーマンスにとって重要です。更新されるテーブルで定義されるフォールバックや参照整合性(RI)など、より多くのセカンダリ インデックス、トリガー、またはの他のオプションが多いほど、データベース内の更新作業は複雑になります。この追加の複雑さにより、作業を実行するために内部的に生成されるDBSステップが増加します。1つのリクエストに対して生成されるステップの合計サイズには内部的な制限があるため、いくつかのテーブル オプションを使用してテーブルが定義されている場合、Stream オペレータは、パック係数を減らす必要がある場合があります。
データベースに渡される列の数は、パック係数にも影響します。Streamオペレータは、複数のSQL文が1つの最適化および回復単位にまとめられたTeradataの複文リクエスト規則を使用します。これは、USING句と組み合わせた場合に最も効率的な方法であり、データが1つパーセル内のデータベースと2番目のパーセル内のSQLに入るようにします。USING句をそのままStream オペレータで使用すると、クエリープランがキャッシュされ、解析アクティビティをバイパスしてスループットを向上させることができます。UPSERT処理が必要な場合、INSERTに対するUPDATEの比率はStream オペレータのパフォーマンスに影響します。INSERTの割合が高いほど、スループットは低くなります。これは、UPDATEがデータベースを入力して行を検索しようとして失敗し、Stream オペレータが代わりにINSERTを実行することを知っているためです。