Quelle est la différence entre les vues et les vues matérialisées dans Oracle?
346
Quelle est la différence entre les vues et les vues matérialisées dans Oracle?
Les vues matérialisées sont basées sur le 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 accès.
Vues
Ils évaluent les données des tables sous-jacentes à la définition de la vue au moment où la vue est interrogée . Il s'agit d'une vue logique de vos tables, sans aucune donnée stockée ailleurs.
L'avantage d'une vue est qu'elle vous renverra toujours les dernières données . L' inconvénient d'une vue est que ses performances dépendent de la qualité d'une instruction de sélection sur laquelle la vue est basée. Si l'instruction select utilisée par la vue rejoint de nombreuses tables ou utilise des jointures basées sur des colonnes non indexées, la vue risque de mal fonctionner.
Vues matérialisées
Ils sont similaires aux vues standard, en ce sens qu'ils constituent 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 est que lorsque vous interrogez une vue matérialisée, vous interrogez une table , qui peut également être indexée.
De plus, comme toutes les jointures ont été résolues au moment de l'actualisation de la vue matérialisée, 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. De plus, 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 à partir de votre vue matérialisée. Dans les situations où vous créez des vues matérialisées sous forme de tableaux agrégés ou de copies de requêtes fréquemment exécutées, cela peut considérablement accélérer le temps de réponse de votre application utilisateur final. L' inconvénient est que les données que vous récupérez de la vue matérialisée ne 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 définies pour s'actualiser manuellement, selon un calendrier défini ou en fonction de la base de données détectant une modification des données de l'une des tables sous-jacentes . Les vues matérialisées peuvent être mises à jour de manière incrémentielle en les combinant avec des journaux de vues matérialisées, qui agissent comme des sources de capture de données modifiées sur les tables sous-jacentes.
Les vues matérialisées sont le plus souvent utilisées dans les applications d'entreposage de données / de veille stratégique 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 aboutiraient à une application inutilisable.
Les vues matérialisées contribuent également à garantir un moment cohérent dans le temps, similaire à l' isolement de l'instantané .
la source
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ées pour augmenter les performances des applications lorsqu'il n'est pas possible ou souhaitable d'utiliser une vue standard avec des index qui lui sont appliqués. Les vues matérialisées peuvent être mises à jour régulièrement via des déclencheurs ou en utilisant l'
ON COMMIT REFRESH
option. Cela nécessite quelques autorisations supplémentaires, mais ce n'est rien de complexe.ON COMMIT REFRESH
est en place depuis au moins Oracle 10.la source
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 exécution de la requête. 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.
la source
Vue matérialisée - une table sur un disque qui contient le jeu de résultats d'une requête
Vue sans matérialisation - une requête qui extrait des données de la table sous-jacente
la source
Vue: la vue n'est qu'une requête nommée. Il ne stocke rien. Lorsqu'une requête est affichée, elle exécute la requête de la définition de la vue. Les données réelles proviennent du tableau.
Vues matérialisées: stockent les données physiquement et sont mises à jour périodiquement. Lors de l'interrogation de MV, il fournit des données de MV.
la source
Ajout à la réponse assez complète de Mike McAllister ...
Les vues matérialisées ne peuvent être définies pour s'actualiser automatiquement via la base de données en détectant les modifications que 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 des déclencheurs essentiellement internes pour suivre les modifications dans les tables source afin de ne mettre à jour que les lignes modifiées dans la table mview.
Lorsque vous créez une vue matérialisée, vous constaterez qu'Oracle crée à la fois la mview et une table portant le même nom , ce qui peut prêter à confusion.
la source
Les vues matérialisées sont la vue logique des données pilotées par la requête de sélection, mais le résultat de la requête sera stocké dans la table ou le disque, la définition de la requête sera également stockée dans la base de données.
Les performances de la vue matérialisée sont meilleures que celles de la vue normale, car les données de la vue matérialisée seront stockées dans le tableau et le tableau peut être indexé plus rapidement pour la jointure. joindre l'instruction comme en cas de vue.
Autre différence, en cas de vue, nous obtenons toujours les dernières données, mais en cas de vue matérialisée, nous devons actualiser la vue pour obtenir les dernières données. Dans le cas de la vue matérialisée, nous avons besoin d'un déclencheur supplémentaire ou d'une méthode automatique pour que MV puisse être actualisé, ce n'est pas requis pour les vues dans la base de données.
la source