メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

最適な分散スタイルの選択

クエリを実行すると、必要に応じて結合と集計を実行するために、クエリオプティマイザによって行がコンピューティングノードに再分散されます。テーブル分散スタイルの選択は、クエリを実行する前にデータを必要な場所に配置しておくことによって、再分散ステップの影響を最小限に抑えるために行われます。

  1. ファクトテーブルと 1 つのディメンションテーブルをそれらの共通の列に基づいて分散させます。

    ファクトテーブルに指定できる分散キーは 1 つだけです。別のキーを使用して結合しているテーブルは、ファクトテーブルとコロケーションされません。結合の頻度と結合列のサイズに基づいてコロケーションする 1 つのディメンションを選択します。ディメンションテーブルのプライマリキーとそれに対応するファクトテーブルの外部キーをいずれも DISTKEY として指定します。

  2. フィルタリングされたデータセットのサイズに基づいて最大ディメンションを選択します。

    結合で使用されている行のみが分散される必要があるため、テーブルのサイズではなく、フィルタリング後のデータセットのサイズを考慮します。

  3. フィルタリングされた結果セットで高い濃度の行を選択します。

    日付列の販売テーブルを配信する場合、例えば、ほとんどの販売が季節的でなければ、おそらくほぼ均等なデータ分散を取得します。ただし、通常、範囲が制限された述語を使用して狭い日付期間をフィルタリングする場合は、フィルタリングされた行のほとんどはスライス限られたセットになり、クエリのワークロードもスキューされます。

  4. ALL 分散を使用するように一部のディメンションテーブルを変更します。

    ファクトテーブルやその他の重要な結合テーブルとディメンションテーブルをコロケーションできない場合は、テーブル全体を全ノードに分散させることによってパフォーマンスを大幅に向上させることができます。ALL 分散を使用すると、ストレージ領域要件の増大、ロード時間の長期化、メンテナンス操作の増加を招くため、ALL 分散を選択する前にすべての要因を比較検討しておく必要があります。

分散スタイルの選択の詳細については、「チュートリアル: テーブル設計のチューニング」と「データ分散スタイルの選択」を参照してください。