自動マテリアライズドビュー - Amazon Redshift

自動マテリアライズドビュー

マテリアライズドビューは、Amazon Redshift でのクエリのパフォーマンスを向上させるための強力なツールです。これは、事前に計算された結果セットを保存することによって実現されます。既存の結果セットからレコードを取得できるため、類似したクエリが、毎回同じロジックを再実行する必要はありません。デベロッパーとアナリストは、ワークロードを分析した後にマテリアライズドビューを作成します。これにより、どのクエリが利益をもたらすか、各マテリアライズドビューのメンテナンスにコストをかけるべきかどうかを判断します。ワークロードの増加や変化にともない、パフォーマンス上のメリットを引き続き明確に提供するためには、これらのマテリアライズドビューを見直す必要があります。

Redshift の自動マテリアライズドビュー (AutoMV) 機能では、ユーザーが作成したマテリアライズドビューと同様のパフォーマンス上のメリットが提供されます。Amazon Redshift は、機械学習を使用してワークロードの継続的なモニタリングを行い、メリットが認められる場合には、新しいマテリアライズドビューを作成します。AutoMVは、マテリアライズドビューを作成して最新の状態に保つ際のコストと、その処理がクエリーレイテンシーに与えると思われるメリットの間でバランスを取ります。また、システムは以前に作成された AutoMV のモニタリングを行い、有益性が認められない場合はそれを削除します。

AutoMV の動作と機能は、ユーザーにより作成されたマテリアライズドビューと同じです。これらは、同じ基準と制限を使用しており、更新は自動的かつ増分的に行われます。ユーザーが作成したマテリアライズドビューと同様に、マテリアライズドビューを使用するための自動クエリ書き換え はシステムが作成した AutoMV から利点を享受できるクエリを特定します。これらのクエリは AutoMVS を使用するように自動的に書き換えられるため、クエリのパフォーマンスが向上します。デベロッパーは AutoMV を利用するためにクエリを更新する必要はありません。

注記

自動マテリアライズドビューは断続的に更新されます。AutoMV を使用するように書き換えられたクエリは、常に最新の結果を返します。データが最新でないことを Redshift が検出した場合、クエリは自動マテリアライズドビューから読み取るように書き換えられることはありません。代わりに、クエリはベーステーブルから最新のデータを選択します。

繰り返し使用されるクエリを含むワークロードで、AutoMV のメリットが活かされます。一般的ユースケースには以下が含まれます。

  • ダッシュボード – ダッシュボードは、主要なビジネス指標 (KPI)、イベント、傾向、およびその他のメトリクスのビューを素早く提供するために広く使用されます。多くの場合、チャートやテーブルによる共通のレイアウトが使用されますが、フィルタリング、あるいはドリルダウンなどのディメンション選択操作では、異なるビューが表示されます。通常ダッシュボードには、異なるパラメータで繰り返し使用される共通のクエリセットが備わっています。ダッシュボードクエリは、自動化されたマテリアライズドビューから大きなメリットを得ることができます。

  • レポート – レポートクエリでは、ビジネス要件とレポートの種類に基づくさまざまな頻度により、スケジューリングが行えます。さらに、自動化することもオンデマンドにすることもできます。レポートクエリに通じる一般的な特徴は、クエリが長時間実行され、リソースを大量に消費するという点です。AutoMV では、クエリの実行ごとに再計算をする必要がないため、Redshift における各クエリの実行時間とリソースの使用率が削減されます。

自動マテリアライズドビューをオフにするには、auto_mv パラメータグループを false に更新します。詳細については、Amazon Redshift クラスター管理ガイドの Amazon Redshift パラメータグループを参照してください。

自動マテリアライズドビューの SQL スコープと考慮事項

  • 自動マテリアライズドビューは、GROUP BY 句または SUM、COUNT、MIN、MAX、AVG のいずれかの集計関数が含まれていれば、クエリまたはサブクエリによって開始および作成できます。ただし、以下のいずれかを含めることはできません。

    • 左、右、またはフル外部結合

    • SUM、COUNT、MIN、MAX、AVG を除く集計関数 (これらの関数は、自動クエリ書き換えで動作します)。

    • DISTINCT を含むすべての集計関数

    • Window 関数

    • SELECT DISTINCT または HAVING 句

    • その他のマテリアライズドビュー

    条件を満たすクエリが自動マテリアライズドビューの作成を開始することは保証されません。システムは、ワークロードに対して期待されるメリットと、維持するリソースのコスト (更新するシステムのコストを含む) に基づいて、ビューの作成元となる候補を決定します。結果の各マテリアライズドビューは、自動クエリ書き換えによって使用可能です。

  • AutoMV は、サブクエリまたはセット演算子の個々のレッグによって開始される場合がありますが、結果のマテリアライズドビューにはサブクエリまたはセット演算子は含まれません。

  • AutoMV がクエリに使用されたかどうかを判断するには、EXPLAIN プランを表示し、出力で %_auto_mv_% を探します。詳細については、「EXPLAIN」を参照してください。

  • データ共有やフェデレーションテーブルなどの外部テーブルでは、自動マテリアライズドビューはサポートされていません。

自動マテリアライズドビューの制限

自動マテリアライズドビューの操作に関する制限は次のとおりです。

  • AutoMV の最大数 - 自動マテリアライズドビューの制限はクラスター内のデータベースごとに 200 です。

  • ストレージスペースとキャパシティ - AutoMV は、ユーザーのワークロードに影響を与えないように、予備のバックグラウンドサイクルを使用して実行されるという点が重要な特徴です。クラスターがビジー状態であるか、ストレージ領域が不足している場合、AutoMV はアクティビティを停止します。具体的には、クラスターの総容量が 80% の場合、新しい自動マテリアライズドビューは作成されません。総容量が 90% になると、ユーザーのワークロードがパフォーマンスを低下させることなく継続できるように、これらのビューが削除されることがあります。クラスター容量の確認方法の詳細については、「STV_NODE_STORAGE_CAPACITY」を参照してください。

自動マテリアライズドビューの料金

Amazon Redshift の自動最適化機能により、自動マテリアライズドビューが作成および更新されます。このプロセスのコンピューティングリソースには料金はかかりません。自動マテリアライズドビューのストレージには、通常のストレージ料金が課金されます。詳細については、Amazon Redshift の料金を参照してください。

追加リソース

次のブログ記事では、自動マテリアライズドビューについて詳しく説明しています。それらがどのように作成、管理、削除されるかを詳しく説明しています。また、こうした意思決定を左右する基礎となるアルゴリズムについても説明しています。「Optimize your Amazon Redshift query performance with automated materialized views」」(自動マテリアライズドビューで Amazon Redshift のクエリパフォーマンスを最適化する)

このビデオでは、まずマテリアライズドビューについて説明し、マテリアライズドビューによってどのようにパフォーマンスが向上し、リソースを節約できるかを説明します。次に、プロセスフローアニメーションとライブデモンストレーションを使用して、自動マテリアライズドビューについて詳しく説明します。