他の応答に加えて、スキーマのパフォーマンスを向上させるためのいくつかの提案があります。
まず:COPYコマンド
を使用して自動圧縮符号化方式は、COPYコマンドを使用してAmazonで赤方偏移のパフォーマンスを向上させます。 Redshiftデータベースにデータを取得します。 COPYコマンドは十分に巧妙です。アップロードされるデータに最適なエンコーディング設定が自動的に選択されます。あなたはそれについて考える必要はありません。ただし、最初のデータを空のテーブルにアップロードする場合にのみ実行します。
したがって、データを初めてアップロードするときに重要なデータセットを使用するようにしてください。Redshiftは、列エンコーディングを最適な方法で設定することができます。数行のテストデータをアップロードすると、Redshiftは実際の作業負荷を処理するために圧縮を最適に最適化する方法を混乱させます。
第二:使用ベストディストリビューションスタイルとキー
配信スタイルは、データをノードに分散する方法を決定します。テーブルレベルで流通スタイルを適用すると、Redshiftはテーブルとキーをどのように配布するかを指示します。したがって、Redshiftを使用してクエリのパフォーマンスを向上させるには、配信スタイルを指定する方法が重要です。選択したスタイルは、データストレージとクラスタの要件に影響を与える可能性があります。また、COPYコマンドの実行にかかる時間も影響を受けます。
ディメンションが小さいすべてのテーブルにディストリビューションスタイルを設定することをお勧めします。大きなディメンションの場合は、ディメンションと関連するファクトの両方をその結合列に配布します。 2番目の大きな次元を最適化するには、ストレージヒットを取り、ALLを配布します。事実に次元の列を設計することさえできます。
サード:
指定されている場合は赤方偏移データベースはソート・キー列の配列を持つテーブルにデータを保持するキーベストソートを使用してください。それは各パーティションでソートされているためです。各クラスタノードは事前定義された順序でパーティションを維持します。 Redshiftスキーマの設計時には、予算への影響も考慮してください。Redshiftは、格納されたデータ量とノード数によってpricedです。
ソートキーは、AmazonのRedshiftパフォーマンスを大幅に最適化します。あなたは多くの方法でそれを行うことができます。まず、データフィルタリングを使用します。 sort-key-columnのwhere-clauseフィルタを使用すると、データブロック全体がスキップされます。 Redshiftはデータをブロック単位で保存するためです。各ブロックヘッダーには、最小ソートキー値と最大ソートキー値が記録されます。その範囲外にフィルタリングすると、ブロック全体がスキップされることがあります。
また、ジョイントキーでソートされた2つのテーブルを結合する場合、データは一致する順序で読み込まれます。また、別々のソートステップを使用せずにマージ結合することもできます。大規模なファクトテーブルへの大きな次元の結合は、どちらもハッシュテーブルに収まらないため、このメソッドでは簡単になります。