Quelle est la différence entre les vues et les vues matérialisées dans Oracle?
Quelle est la différence entre les vues et les vues matérialisées dans Oracle?
8 réponses
Les vues matérialisées sont basées sur disque et sont mises à jour périodiquement en fonction de la définition de la requête.
Les vues sont virtuelles uniquement et exécutent la définition de la requête chaque fois qu'elles sont accédées.
Vues
Ils évaluent les données dans les tableaux sous-jacents à la définition de la vue au moment où la vue est interrogée. C'est une vue logique de vos tables, sans données stockées nulle part ailleurs.
L'avantage d'une vue est qu'elle vous retournera toujours les dernières données . L'inconvénient d'une vue est que ses performances dépendent de la qualité d'une instruction select sur laquelle la vue est basée. Si l'instruction select utilisée par la vue rejoint plusieurs tables ou utilise des jointures basé sur des colonnes non indexées, la vue pourrait mal fonctionner.
Vues Matérialisées
Ils sont similaires aux vues régulières, en ce sens qu'ils sont une vue logique de vos données (basée sur une instruction select), cependant, le jeu de résultats de requête sous-jacent a été enregistré dans une table . L'avantage de cela est que lorsque vous interrogez une vue matérialisée, vous interrogez une table, ce qui peut aussi être indexés.
En outre, parce que toutes les jointures ont été résolues à matérialisé temps d'actualisation de la vue, vous payez le prix de la jointure une fois (ou aussi souvent que vous actualisez votre vue matérialisée), plutôt que chaque fois que vous sélectionnez dans la vue matérialisée. En outre, avec la réécriture de requête activée, Oracle peut optimiser une requête qui sélectionne à partir de la source de votre vue matérialisée de telle sorte qu'elle lit à la place de votre vue matérialisée. Dans les situations où vous créez des vues matérialisées en tant que formes de tables agrégées ou en tant que copies de requêtes fréquemment exécutées, cela peut grandement accélérez le temps de réponse de votre application utilisateur final. L'inconvénient de est que les données que vous récupérez de la vue matérialisée sont aussi à jour que la dernière fois que la vue matérialisée a été actualisée.
Les vues matérialisées peuvent être configurées pour être actualisées manuellement, selon une planification définie ou en fonction de la détection par la base de données d'un changement dans les données d'une des tables sous-jacentes. Les vues matérialisées peuvent être mises à jour progressivement en les combinant avec matérialisées afficher les journaux, qui agissent comme des sources de capture de données de modification sur les tables sous-jacentes.
Les vues matérialisées sont le plus souvent utilisées dans les applications d'entreposage de données / business intelligence où l'interrogation de grandes tables de faits avec des milliers de millions de lignes entraînerait des temps de réponse aux requêtes qui entraîneraient une application inutilisable.
Les vues matérialisées aident également à garantir un moment cohérent dans le temps, similaire à snapshot isolation .
Une vue utilise une requête pour extraire des données des tables sous-jacentes.
Une vue matérialisée est une table sur disque qui contient le jeu de résultats d'une requête.
Les vues Matérialisées sont principalement utilisés pour augmenter les performances de l'application lorsqu'il n'est pas possible ou souhaitable d'utiliser un affichage standard avec index appliqués. Les vues matérialisées peuvent être mises à jour régulièrement via des déclencheurs ou en utilisant l'option ON COMMIT REFRESH
. Cela nécessite quelques autorisations supplémentaires, mais ce n'est rien complexe. ON COMMIT REFRESH
est en place depuis au moins Oracle 10.
Les vues sont essentiellement des structures logiques de type table remplies à la volée par une requête donnée. Les résultats d'une requête de vue ne sont stockés nulle part sur le disque et la vue est recréée chaque fois que la requête est exécutée. Les vues matérialisées sont des structures réelles stockées dans la base de données et écrites sur le disque. Ils sont mis à jour en fonction des paramètres définis lors de leur création.
Matérialisée vue - un tableau sur un disque qui contient le résultat d'une requête
Vue Non matérialisée - une requête qui extrait les données de la table sous-jacente
Vue: point de Vue est juste une requête nommée. Il n'a pas stocker quoi que ce soit. Quand il y a une requête sur la vue, il exécute la requête de la définition de la vue. Les données réelles proviennent du tableau.
Vues matérialisées: stocke les données physiquement et sont mises à jour périodiquement. Tout en interrogeant MV, il donne des données de MV.
Ajouter à la réponse assez complète de Mike McAllister...
Les vues matérialisées ne peuvent être définies que pour ACTUALISER automatiquement via la base de données détectant les modifications lorsque la requête de vue est considérée comme simple par le compilateur. S'il est considéré comme trop complexe, il ne sera pas en mesure de configurer ce qui sont essentiellement des déclencheurs internes pour suivre les changements dans les tables source pour ne mettre à jour que les lignes modifiées dans la table mview.
Lorsque vous créez une vue matérialisée, vous trouverez cet Oracle crée à la fois le mview et comme une table avec le même nom , ce qui peut rendre les choses confuses.
Un afficher n'est rien mais une requête SQL, prend la sortie d'une requête et la fait apparaître comme une table virtuelle, qui ne prend pas tout l'espace de stockage ou qui contiennent des données
Mais Les vues matérialisées sont des objets de schéma, il stocke les résultats d'une requête dans un objet de schéma séparé(c'est-à-dire, prend de l'espace de stockage et contient des données). Cela indique que la vue matérialisée renvoie une copie physiquement séparée des données de la table