REFRESH MATERIALIZED VIEW - Amazon Redshift

REFRESH MATERIALIZED VIEW

マテリアライズドビューの更新

マテリアライズドビューを作成する際、そのコンテンツには、その時点での基となるデータベーステーブルまたはテーブルの状態が反映されます。アプリケーションが基となるテーブルにあるデータを変更しても、マテリアライズドビューのデータは変更されません。マテリアライズドビューのデータは、REFRESH MATERIALIZED VIEW ステートメントを使用して随時更新できます。このステートメントを使用する際は、Amazon Redshift は、ベーステーブルまたはテーブルで行われた変更を特定し、特定した変更をマテリアライズドビューに適用します。

マテリアライズドビューの詳細については、「Amazon Redshift でのマテリアライズドビューの作成」を参照してください。

Syntax

REFRESH MATERIALIZED VIEW mv_name

Parameters

mv_name

更新するマテリアライズドビューの名前。

使用に関する注意事項

マテリアライズドビューの所有者のみが、そのマテリアライズドビューに対して REFRESH MATERIALIZED VIEW のオペレーションを実行できます。さらに、REFRESH MATERIALIZED VIEW を正常に実行するには、所有者が基となるベーステーブルに対する SELECT 権限を持っている必要があります。

REFRESH MATERIALIZED VIEW コマンドは、独自のトランザクションとして実行されます。Amazon Redshift トランザクションのセマンティクスに従って、ベーステーブルの、どのデータが REFRESH コマンドに表示されるか、または REFRESH コマンドによって加えられた変更が Amazon Redshift で実行中の他のトランザクションにいつ表示されるかを判断します。

  • 増分マテリアライズドビューの場合、REFRESH MATERIALIZED VIEW はコミット済みのベーステーブル行のみを使用します。したがって、同じトランザクション内のデータ操作言語 (DML) ステートメントの後に更新操作が実行された場合、その DML ステートメントの変更は更新のために表示されません。

  • マテリアライズドビューの完全更新の場合、REFRESH MATERIALIZED VIEW は、通常の Amazon Redshift トランザクションセマンティクスに従って、更新トランザクションに表示されるすべてのベーステーブル行を表示します。

  • 入力引数型よっては、マテリアライズドビューの増分リフレッシュが Amazon Redshift でサポートされています。特定の入力引数型を持つ次の関数です。DATE (タイムスタンプ)、DATE_PART (日付、時刻、間隔、time-tz)、DATE_TRUNC (タイムスタンプ、間隔)。

Amazon Redshift の一部のオペレーションは、マテリアライズドビューに影響します。こうしたオペレーションの中には、マテリアライズドビューを定義するクエリで増分更新のための SQL 機能のみが使用されている場合でも、REFRESH MATERIALIZED VIEW オペレーションによってマテリアライズドビューが完全に再計算されるものがあります。次に例を示します。

  • マテリアライズドビューが更新されない場合、バックグラウンドでのバキューム操作がブロックされることがあります。内部でしきい値の期間を定義したら、バキュームの実行が許可されます。バキュームを操作すると、依存するマテリアライズドビューは、次の更新時に (増分更新であっても) 再計算する対象としてマークされます。VACUUM の詳細については、「VACUUM」を参照してください。イベントとステータス変更の詳細については、「STL_MV_STATE」を参照してください。

  • ベーステーブルで実行されるユーザー操作には、次に REFRESH が実行された際に、マテリアライズドビューが完全に再計算されるように強制するものがあります。このような操作の例としては、手動で呼び出された VACUUM、従来のサイズ変更、ALTER DISTKEY 操作、ALTER SORTKEY 操作、および切り捨て操作があります。イベントとステータス変更の詳細については、「STL_MV_STATE」を参照してください。

増分更新の制約事項

Amazon Redshift では、現在のところ、次の SQL 要素のいずれかを使用してクエリで定義されたマテリアライズドビューの増分更新はサポートされていません。

  • OUTER JOIN (右、左、またはフル)。

  • 集合演算: UNION、INTERSECT、EXCEPT、MINUS。

  • UNION ALL はサブクエリで発生し、集計関数または GROUP BY 句がクエリに存在する場合に使用します。

  • 集計関数は、AVG、MEDIAN、PERCENTILE_CONT、LISTAGG、STDDEV_SAMP、STDDEV_POP、APPROXIMATE COUNT、APPROXIMATE PERCENTILE、およびビット単位の集計関数です。

    注記

    COUNT および SUM 集計関数がサポートされています。

  • DISTINCT COUNT、DISTINCT SUM などの DISTINCT 集計関数。

  • ウィンドウ関数。

  • 共通部分式の最適化など、クエリの最適化に一時テーブルを使用するクエリ。

  • FROM 句以外にあるサブクエリ

  • マテリアライズドビューを定義するクエリでベーステーブルとして参照される外部テーブル。

  • 日時関数、RANDOM、STABLE 以外のユーザー定義関数など、可変関数。

Examples

次の例では、マテリアライズドビュー tickets_mv を更新します。

REFRESH MATERIALIZED VIEW tickets_mv;