0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Redshiftの制約と解消方法について

Posted at

Redshiftの制約と解決案をまとめてみました。

1. データ分散・配置関連

制約 解消案
ファクトテーブルには1つのディストリビューションキーしか設定できない。 ディストリビューションキーはデータをRedshiftのノード間でどう分散するかを決めるものです。結合頻度が高いディメンジョンテーブル(顧客情報、製品情報など)のキーを使うと効率的にクエリが実行されます。
ディストリビューションが不均等になる可能性がある(例: 季節変動によるデータ集中)。 データの分布が偏ると、特定のノードだけに負荷が集中して遅くなります。値の種類(カーディナリティ)が多いカラムをディストリビューションキーにすると偏りを防ぎやすくなります。
フィルタ期間が狭い場合、クエリ負荷が一部のノードに集中する。 一定期間だけのデータを絞り込むクエリが多いと、該当するノードに処理が集中します。そこで、フィルタ後に均等に分散されるカラムを使うのが効果的です。
ディメンジョンテーブルがファクトテーブルと同じノードに配置されない場合、クエリ性能が低下する。 ディメンジョンテーブルを全ノードに複製(ALLディストリビューション)すると、結合が高速になりますが、ストレージを多く消費するため、頻繁に結合される小さなテーブルで使うと良いです。

2. データ管理・性能関連

制約 解消案
ALLディストリビューションはストレージとロード時間を増加させる。 複製するテーブルが大きいと、ストレージが逼迫しロード時間が長くなります。小規模なテーブルにのみ適用してください。
データが大量でクエリ計画が最適化されない場合がある。 ソートキーを指定すると、クエリは特定の範囲外のデータをスキップでき、処理が高速化されます。特に日付やIDのようなカラムが効果的です。
圧縮方式が適切でない場合、クエリ性能が低下する。 Redshiftの自動圧縮機能を使えば、最適な圧縮形式が適用され、データサイズの縮小とクエリ高速化が期待できます。

3. クエリ最適化関連

制約 解消案
クエリが大規模な結合でハッシュ結合により遅くなることがある。 結合カラムをソートキーとディストリビューションキーに指定すると、クエリはハッシュ結合よりも高速なソートマージ結合を選択します。
主キーや外部キーの制約が不足している場合、クエリ最適化が不十分となる可能性がある。 Redshiftは主キー・外部キー制約を情報として使用してクエリを最適化します。これらを設定することで、効率的なクエリ計画をサポートできます。
カラムサイズを最大値に設定するとストレージ効率が低下する。 必要以上に大きなカラムサイズはストレージを無駄に消費します。使用するデータに合ったカラムサイズを設定しましょう。

参考 以下で用語をまとめています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?