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 VIEW と VACUUM がベーステーブルで同時に実行される際に起こります。操作が完了したら、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 はクラスターで実行される通常のクエリとして機能しますクエリが実行されていることを確認するには、次の操作を行います。
REFRESH MATERIALIZED VIEW 操作のパフォーマンスは、次の要因の影響を受けます。
REFRESH MATERIALIZED VIEW のパフォーマンスが遅い場合は、「クエリパフォーマンスの向上」を参照してください。
アクティブなワークロードのため、自動更新で更新アクティビティが表示されない
Amazon Redshift は自動更新よりもワークロードを優先します。この優先順位付けにより、ワークロードのパフォーマンスを維持するために自動更新が停止したり、一部のマテリアライズドビューのリフレッシュが遅れたりする可能性があります。場合によっては、マテリアライズドビューでより確定的な更新動作が必要になることがあります。より確定的な更新動作を作成するには、以下を使用してください。
詳細については、マテリアライズドビューの自動更新を参照してください。