Pourquoi ma vue matérialisée n'est pas actualisée pour mon cluster Amazon Redshift ?

Dernière mise à jour : 26/10/2022

Ma vue matérialisée n'est pas actualisée pour mon cluster Amazon Redshift. Pourquoi cela se produit-il et comment puis-je actualiser ma vue matérialisée ?

Brève description

Les scénarios suivants peuvent empêcher l'actualisation d'une vue matérialisée dans Amazon Redshift ou prendre du temps à se terminer :

  • L'ACTUALISATION DE LA VUE MATÉRIALISÉE échoue avec une erreur d'autorisation
  • L'erreur suivante s'affiche : Opération non valide : la vue matérialisée mv_name n'a pas pu être actualisée car une table de base a été modifiée physiquement en raison d'un vide ou d'une troncature simultanés. Veuillez réessayer ;
  • L'ACTUALISATION DE LA VUE MATÉRIALISÉE n'est pas actualisable
  • L'ACTUALISATION DE LA VUE MATÉRIALISÉE a été soumise et exécutée pendant longtemps
  • L'activité d'actualisation n'apparaît pas sur une actualisation automatique en raison d'une charge de travail active

Solution

L'ACTUALISATION DE LA VUE MATÉRIALISÉE échoue avec une erreur d'autorisation

Vous devez être le propriétaire pour effectuer une opération d'ACTUALISATION DE LA VUE MATÉRIALISÉE sur une vue matérialisée. Vous devez également disposer des privilèges suivants :

  • privilège SELECTION sur les tables de base sous-jacentes ;
  • privilège USAGE sur le schéma ;

si la vue matérialisée est un recalcul complet au lieu d'une actualisation incrémentielle, vous devez également disposer du privilège CREATION sur le schéma. Pour définir les privilèges, consultez ACCORDER. Pour plus d'informations, consultez Actualisation automatique d'une vue matérialisée.

Opération non valide : la vue matérialisée mv_name n'a pas pu être actualisée car une table de base a été modifiée physiquement en raison d'un vide ou d'une troncature simultanés. Veuillez réessayer ;

L'erreur se produit lorsque ACTUALISATION DE LA VUE MATÉRIALISÉE et VIDER sont soumis à une exécution simultanée sur la table de base. Une fois l'opération terminée, l'action ACTUALISATION DE LA VUE MATÉRIALISÉE peut être soumis à nouveau.

L'ACTUALISATION DE LA VUE MATÉRIALISÉE n'est pas actualisable

Les vues matérialisées non actualisables peuvent être provoquées par des opérations qui :

  • renomment ou suppriment une colonne ;
  • modifient le type d'une colonne ;
  • modifient le nom d'une table ou d'un schéma de base.

Remarque : les vues matérialisées dans cette condition peuvent être interrogées mais ne peuvent pas être actualisées. Les contraintes précédentes s'appliquent même si la colonne n'est pas utilisée dans la vue matérialisée.

Pour déterminer si les données de la vue matérialisée sont périmées et obtenir des informations sur l'état de la vue matérialisée, utilisez STV_MV_INFO. Pour visualiser l'activité d'actualisation de la vue matérialisée, utilisez SVL_MV_REFRESH_STATUS. Dans cet état de vue matérialisée non actualisable, vous devez supprimer et recréer la vue matérialisée pour la maintenir à jour.

Voici des exemples de messages d'erreur susceptibles de s'afficher :

```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.```

L'ACTUALISATION DE LA VUE MATÉRIALISÉE a été soumise et exécutée pendant longtemps

L'ACTUALISATION DE LA VUE MATÉRIALISÉE fonctionne comme une requête normale qui s'exécute sur votre cluster. Pour confirmer que la requête est en cours d'exécution, procédez comme suit :

  • Pour afficher les requêtes actives exécutées sur les données, utilisez STV_INFLIGHT.
  • Pour enregistrer l'état actuel des requêtes suivies par la gestion de la charge de travail (WLM), utilisez STV_WLM_QUERY_STATE.
  • Pour obtenir des informations sur les requêtes et les étapes de requête qui s'exécutent activement sur les nœuds de calcul, utilisez STV_EXEC_STATE.

Les performances de l'opération d'ACTUALISATION DE LA VUE MATÉRIALISÉE sont soumises aux facteurs suivants :

  • Verrouillages de table : pour consulter les mises à jour actuelles des tables de la base de données, consultez STV_LOCKS.
  • Ressources allouées : pour consulter la configuration de la classe de service pour WLM, consultez STV_WLM_SERVICE_CLASS_CONFIG.
  • Type d'actualisation : actualisation incrémentielle ou complète. Pour voir le type d'actualisation subi par la vue matérialisée, consultez SVL_MV_REFRESH_STATUS.

Si les performances d'ACTUALISATION DE LA VUE MATÉRIALISÉE sont lentes, consultez Améliorer les performances des requêtes.

L'activité d'actualisation n'apparaît pas sur une actualisation automatique en raison d'une charge de travail active

Amazon Redshift donne la priorité à vos charges de travail plutôt qu'à l'actualisation automatique. Cette priorisation peut arrêter l'actualisation automatique afin de préserver les performances de votre charge de travail et retarder l'actualisation de certaines vues matérialisées. Dans certains cas, vos vues matérialisées peuvent nécessiter un comportement d'actualisation plus déterministe. Pour créer un comportement d'actualisation plus déterministe, utilisez ce qui suit :

  • Actualisation manuelle comme décrit dans ACTUALISATION DE LA VUE MATÉRIALISÉE
  • Actualisation planifiée à l'aide des opérations de l'API du planificateur Amazon Redshift ou de la console

Pour plus d'informations, consultez Actualisation automatique d'une vue matérialisée.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?