Vues matérialisées : l’échec de l’actualisation invalide une vue matérialisée¶
Attention
Ce changement de comportement est présent dans le bundle 2023_05.
Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.
Les vues matérialisées sont mises à jour automatiquement et régulièrement par un processus d’arrière-plan.
Actuellement, si l’actualisation d’une vue matérialisée échoue, les données de la vue matérialisée ne sont pas mises à jour et le processus d’arrière-plan continue d’essayer d’actualiser la vue matérialisée périodiquement.
Si l’échec est dû à un problème qui continuera à se produire (par exemple, une erreur de division par zéro causée par la définition de la vue matérialisée ou par les données), le processus d’arrière-plan échouera continuellement à actualiser la vue matérialisée et les données de la vue matérialisée ne seront pas mises à jour.
Dans la version actuelle, certains types d’erreurs au cours du processus d’actualisation invalident la vue matérialisée. Par ailleurs :
Lorsque vous interrogez la vue matérialisée, le résultat comprendra la raison de l’invalidation.
La sortie de la commande SHOW MATERIALIZED VIEWS comprendra la raison pour laquelle la vue matérialisée a été invalidée.
À l’aide des informations fournies par la sortie de ces commandes, résolvez le problème de la vue matérialisée et exécutez la commande ALTER MATERIALIZED VIEW… RESUME pour reprendre la vue matérialisée.
En résumé, le processus d’actualisation et d’interrogation de la vue matérialisée a été modifié comme décrit ci-dessous :
- Précédemment:
Le processus d’arrière-plan ne parvient pas à actualiser la vue matérialisée.
Bien que les données de la vue matérialisée soient obsolètes, la sortie de l’interrogation de la vue matérialisée n’indique pas que les données le sont.
Lorsque vous exécutez la commande SHOW MATERIALIZED VIEWS, la colonne refreshed_on indique que les données sont obsolètes, mais la sortie n’en donne pas la raison.
- Actuellement:
Le processus d’arrière-plan invalide la vue matérialisée.
L’interrogation de la vue matérialisée aboutit à une erreur qui indique pourquoi le processus d’actualisation n’a pas réussi à mettre à jour la vue matérialisée. Par exemple :
Lorsque vous exécutez la commande SHOW MATERIALIZED VIEWS, la colonne
invalidindique que la vue matérialisée est non valide et la colonneinvalid_reasoncontient la raison de l’invalidation. Par exemple :
Par exemple, supposons que vous exécutiez les instructions suivantes pour créer une vue matérialisée :
Supposons que vous insériez des données dans la table, ce qui entraînerait l’échec de l’actualisation de la vue matérialisée. Par exemple, supposons que vous exécutiez l’instruction suivante :
Lors de l’actualisation suivante de la vue matérialisée, l’actualisation échouera avec une erreur de type « division par zéro ». Comme l’actualisation échoue, la vue matérialisée sera invalidée.
Pour voir la raison de l’invalidation, interrogez la vue matérialisée ou exécutez la commande SHOW MATERIALIZED VIEWS :
Réglez le problème à l’origine de l’invalidation et exécutez la commande ALTER MATERIALIZED VIEW… RESUME pour reprendre la vue matérialisée :
Réf : 1178