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