Teradata-performance-tuning
Teradata-パフォーマンスチューニング
この章では、Teradataのパフォーマンスチューニングの手順について説明します。
説明する
パフォーマンスチューニングの最初のステップは、クエリでEXPLAINを使用することです。 EXPLAINプランは、オプティマイザーがクエリを実行する方法の詳細を提供します。 説明計画で、信頼レベル、使用される結合戦略、スプールファイルサイズ、再配布などのキーワードを確認します。
統計を収集する
オプティマイザーはデータ人口統計を使用して、効果的な実行戦略を考え出します。 COLLECT STATISTICSコマンドは、テーブルのデータ人口統計を収集するために使用されます。 列で収集された統計が最新であることを確認してください。
- WHERE句で使用される列と、結合条件で使用される列の統計を収集します。
- Unique Primary Index列の統計を収集します。
- Non Unique Secondary Index列の統計を収集します。 オプティマイザーは、NUSIまたは全表スキャンを使用できるかどうかを決定します。
- 基本テーブルの統計は収集されますが、結合インデックスの統計を収集します。
- パーティション化列の統計を収集します。
データ型
適切なデータ型が使用されていることを確認してください。 これにより、必要以上のストレージの使用が回避されます。
変換
明示的なデータ変換を回避するために、結合条件で使用される列のデータ型に互換性があることを確認してください。
Sort
不要な場合は、不要なORDER BY句を削除してください。
スプールスペースの問題
クエリがそのユーザーのAMPスプールスペース制限ごとに超過すると、スプールスペースエラーが生成されます。 EXPLAIN PLANを確認し、より多くのスプール領域を消費するステップを特定します。 これらの中間クエリを分割して個別に配置し、一時テーブルを構築できます。
一次インデックス
プライマリインデックスがテーブルに対して正しく定義されていることを確認してください。 プライマリインデックス列は、データを均等に分散し、データへのアクセスに頻繁に使用する必要があります。
SETテーブル
SETテーブルを定義すると、オプティマイザーは、挿入されたすべてのレコードに対してレコードが重複しているかどうかを確認します。 重複チェック条件を削除するには、テーブルに一意のセカンダリインデックスを定義できます。
大きなテーブルの更新
大きなテーブルの更新には時間がかかります。 テーブルを更新する代わりに、レコードを削除し、変更された行を含むレコードを挿入できます。
一時テーブルの削除
一時テーブル(ステージングテーブル)とvolatileが不要になったら削除します。 これにより、永続的なスペースとスプールスペースが解放されます。
MULTISETテーブル
入力レコードに重複レコードがないことが確実な場合は、ターゲット表をMULTISET表として定義して、SET表で使用される重複行チェックを回避できます。