Amazon Redshift クラスターのマテリアライズドビューが更新されないのはなぜですか?

所要時間1分
0

Amazon Redshift クラスターのマテリアライズドビューが更新されていません。なぜこのようなことが起こっているのですか?また、マテリアライズドビューを更新するにはどうすればいいですか?

簡単な説明

以下のシナリオでは、Amazon Redshift のマテリアライズドビューが更新されなかったり、完了するまでに時間がかかることがあります。

  • REFRESH MATERIALIZED VIEW が権限エラーで失敗しています
  • 次のエラーが表示されます。操作が無効です。バキューム/切り捨てが同時に行われたためにベーステーブルが物理的に変更され、マテリアライズドビューの mv_name を更新できませんでした。もう一度お試しください。
  • REFRESH MATERIALIZED VIEW はリフレッシュできません
  • REFRESH MATERIALIZED VIEW が送信され、長時間実行されました
  • アクティブなワークロードのため、自動更新で更新アクティビティが表示されない

解決方法

REFRESH MATERIALIZED VIEW が権限エラーで失敗しています

REFRESH MATERIALIZED VIEW で操作を実行するには、所有者である必要があります。また、次の権限が必要です。

  • 基礎となるベーステーブルのSELECT(選択) 権限
  • スキーマのUSAGE(利用) 権限

マテリアライズドビューがインクリメンタルリフレッシュではなく完全再計算の場合は、スキーマに対するCREATE(作成) 権限も必要です。権限を定義するには、GRANT(付与) を参照してください。詳細については、マテリアライズドビューの自動更新を参照してください。

操作が無効です:バキューム/切り捨てが同時に行われたためにベーステーブルが物理的に変更され、マテリアライズドビューの mv_name を更新できませんでした。もう一度お試しください。

このエラーは、REFRESH MATERIALIZED VIEWVACUUM がベーステーブルで同時に実行される際に起こります。操作が完了したら、REFRESH MATERIALIZED VIEW を再送信できます。

REFRESH MATERIALIZED VIEW はリフレッシュできません

リフレッシュできないマテリアライズドビューは、次のような操作によって発生する可能性があります。

  • 列の名前変更や削除。
  • 列の種類を変更。
  • ベーステーブルまたはスキーマの名前を変更

**注:**この状態のマテリアライズドビューはクエリできますが、リフレッシュすることはできません。前述の制約は、列がマテリアライズドビューで使用されていない場合でも適用されます。

マテリアライズドビュー内のデータが古いかどうか、およびマテリアライズドビューの状態情報を確認するには、STV_MV_INFO を使用します。マテリアライズドビューのリフレッシュアクティビティを表示するには、SVL_MV_REFRESH_STATUS を使用します。マテリアライズドビューのリフレッシュが不可能な状態では、マテリアライズドビューを削除して再作成し、マテリアライズドビューを最新の状態に保つ必要があります。

表示される可能性のあるエラーメッセージの例を次に示します。

```Detail: Procedure <mv_sp_*****_2_1>  does not exist```
```column <column name> does not exist```
```DETAIL:  schema "<schema name>" does not exist ;```
```ERROR: Materialized view <mv namme> is unrefreshable as a base table was renamed.```

REFRESH MATERIALIZED VIEW が送信され、長時間実行されました

REFRESH MATERIALIZED VIEW はクラスターで実行される通常のクエリとして機能しますクエリが実行されていることを確認するには、次の操作を行います。

  • データで実行されているアクティブなクエリを表示するには、 STV_INFLIGHT を使用します。
  • ワークロード管理 (WLM) によるクエリトラックの現在の状態を記録するには、STV_WLM_QUERY_STATE を使用します。
  • コンピュートノードでアクティブに実行されているクエリとクエリステップの情報を調べるには、STV_EXEC_STATE を使用してください。

REFRESH MATERIALIZED VIEW 操作のパフォーマンスは、次の要因の影響を受けます。

  • テーブルロック:データベース内のテーブルの現在の更新を確認するには、STV_LOCKS を参照してください。
  • 割り当てられたリソース:WLM のサービスクラス設定を確認するには、STV_WLM_SERVICE_CLASS_CONFIG を参照してください。
  • 更新のタイプ:インクリメンタル更新または完全更新。マテリアライズドビューで実行されたリフレッシュのタイプを確認するには、SVL_MV_REFRESH_STATUSを参照してください

REFRESH MATERIALIZED VIEW のパフォーマンスが遅い場合は、「クエリパフォーマンスの向上」を参照してください。

アクティブなワークロードのため、自動更新で更新アクティビティが表示されない

Amazon Redshift は自動更新よりもワークロードを優先します。この優先順位付けにより、ワークロードのパフォーマンスを維持するために自動更新が停止したり、一部のマテリアライズドビューのリフレッシュが遅れたりする可能性があります。場合によっては、マテリアライズドビューでより確定的な更新動作が必要になることがあります。より確定的な更新動作を作成するには、以下を使用してください。

  • REFRESH MATERIALIZED VIEWで説明されている手動リフレッシュ
  • Amazon Redshift スケジューラー API オペレーションまたはコンソールを使用してスケジュールされた更新

詳細については、マテリアライズドビューの自動更新を参照してください。


AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ