Redshift Spectrumのベストプラクティス
殴り書きメモ
参考
Amazon Redshift Advanced Guide − 最新ベストプラクティスとアップデート https://d1.awsstatic.com/webinars/jp/pdf/services/20200729_AWS_BlackBelt_RedshiftAdvancedGuide.pdf
Amazon Redshift Spectrum 12 のベストプラクティス | Amazon Web Services ブログ https://aws.amazon.com/jp/blogs/news/10-best-practices-for-amazon-redshift-spectrum/
ベストプラクティス
- 
ファイル/テーブル属性 - 列志向フォーマット(Purquet)
- 必要な列のみを選択
- 最適なファイルサイズ
- 適切なデータ型
 
- 
パーティションプルーニング - 不要なパーティションをSkipさせるため
- コスト削減
 
- Spectrum Usage Limitというアラームを上げる機能がある
- 
Min/Maxプルーニング - Parquet, ORCなど列指向フォーマットの最小/最大値の統計を活用する
- 頻繁に絞り込みを行うカラムでデータをソートしておくと効果的
 
- 
Spectrum層へのプッシュダウン - 
頻繁に絞り込みを行うカラムでデータをソートしておくと効果的 
- 
最後に実行されたクエリの詳細を取得 select query, segment, elapsed, s3_scanned_rows, s3_scanned_bytes, s3query_returned_rows, s3query_returned_bytes, files from svl_s3query_summary where query = pg_last_query_id() order by query,segment;
- 
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_SVL_S3QUERY_SUMMARY.html 
 
- 
- 
データレイアウト - データレイアウトを意識する
 
- 
実行計画の最適化 - テーブルプロパティのnumRowsを更新する
- ANALYZE等で更新出来ない
- ALTER TABLE spectrum_schema.eventSET TABLE PROPERTIES (’numRows’=‘122857504’);
- もしくはGlue Data Catalog側を更新
 
 
 
- テーブルプロパティのnumRowsを更新する
- 
Redshift クラスターサイズ - 
並列度を上げるためにはノード数を増やす必要がある。 - 
スライス数の確認 select node,count(slice) from stv_slices group by node order by node;
- 
スライス毎のリクエストは最大10となる 
 
- 
 
- 
関連しているかもしれない記事
- Redshift Spectrum用にテストデータの準備、及びクエリの実行
- Redshift Spectrumのパフォーマンス確認
- Redshiftのクエリキャンセル
- Redshift Star Schema Benchmark 問い合わせクエリのサンプル
- Redshift Admin Scripts