web-dev-qa-db-fra.com

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?

326
juan

Les vues matérialisées sont basées sur un 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.

340
dacracot

Des vues

Ils évaluent les données dans les tables sous-jacentes à la définition de la vue au moment de l'interrogation de la vue . 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 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 de sélection sur laquelle la vue est basée. Si l'instruction select utilisée par la vue joint beaucoup de tables ou utilise des jointures basées sur des colonnes non indexées, la vue risque de mal fonctionner.

Vues matérialisées

Elles ressemblent aux vues classiques, en ce qu’elles sont une vue logique de vos données (basée sur une instruction select), cependant, le jeu de résultats de la requête sous-jacent a été enregistré dans une table . L'avantage de ceci est que lorsque vous interrogez une vue matérialisée, , vous interrogez une table , qui peut également être indexée.

En outre, toutes les jointures ayant été résolues lors 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 est sélectionnée à partir de la source de votre vue matérialisée, de telle sorte qu'elle lise à partir de votre vue matérialisée. Dans les cas où vous créez des vues matérialisées sous forme de tables d'agrégats 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 d'utilisateur final. L'inconvénient est toutefois 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é rafraîchie .


Les vues matérialisées peuvent être configurées 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 provenant de l'une des tables sous-jacentes . Les vues matérialisées peuvent être mises à jour progressivement 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 et de veille stratégique, où l'interrogation de tables de faits volumineuses contenant des milliers de millions de lignes entraînerait des temps de réponse aux requêtes qui rendaient une application inutilisable.


Les vues matérialisées aident également à garantir un moment constant, semblable à isolation instantanée .

320
Mike McAllister

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 contenant 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 ni faisable ni souhaitable d'utiliser une vue standard à laquelle sont appliqués des index. Les vues matérialisées peuvent être mises à jour régulièrement, soit à l'aide de déclencheurs, soit à l'aide de l'option ON COMMIT REFRESH. Cela nécessite quelques autorisations supplémentaires, mais ce n'est pas complexe. ON COMMIT REFRESH est en place depuis au moins Oracle 10.

48
Jeremiah Peschka

Les vues sont essentiellement des structures logiques sous forme de tables 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.

18
user12786

Vue matérialisée - une table sur un disque contenant le jeu de résultats d'une requête

vue non matérialisée - une requête qui extrait des données de la table sous-jacente

17
fn27

View: La vue n'est qu'une requête nommée. Il ne stocke rien. Lorsqu'une requête est affichée, la requête de la définition de la vue est exécutée. Les données réelles proviennent de la table.

Vues matérialisées: Stocke les données physiquement et les met à jour périodiquement. Lors de l'interrogation de MV, il fournit des données provenant de MV.

3
smshafiqulislam

Ajoutant à la réponse assez détaillée de Mike McAllister ...

Les vues matérialisées ne peuvent être configurées que pour s'actualiser automatiquement par le biais de la base de données détectant les modifications lorsque la requête de vue est considérée simple par le compilateur. Si cela est jugé trop complexe, il ne sera pas en mesure de configurer des déclencheurs essentiellement internes pour suivre les modifications dans les tables source et mettre uniquement à jour 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 le mview et une table portant le même nom, ce qui peut rendre les choses confuses.

2
Stew S

Un view n'est rien d'autre qu'une requête SQL, prend la sortie d'une requête et la fait apparaître comme une table virtuelle, qui n'occupe aucun espace de stockage ni ne contient aucune donnée

Mais vues matérialisées sont des objets de schéma, stockant les résultats d'une requête dans un objet de schéma distinct (c'est-à-dire occuper de l'espace de stockage et contenir des données). Cela indique que la vue matérialisée renvoie une copie physiquement séparée des données de la table.

1
Dlucidone