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