Qual è la differenza tra visualizzazioni e viste materializzate in Oracle?



Answers

Le viste valutano i dati nelle tabelle sottostanti la definizione della vista al momento in cui viene interrogata la vista. È una visione logica delle tue tabelle, senza dati archiviati altrove. Il lato positivo di una vista è che ti restituirà sempre gli ultimi dati. Lo svantaggio di una vista è che le sue prestazioni dipendono da quanto sia buona l'impostazione di selezione su cui si basa la vista. Se l'istruzione select utilizzata dalla vista unisce molte tabelle o utilizza join basati su colonne non indicizzate, la vista potrebbe avere un rendimento scarso.

Le viste materializzate sono simili alle viste normali, in quanto sono una vista logica dei dati (basata su un'istruzione select), tuttavia, il set di risultati della query sottostante è stato salvato in una tabella. Il lato positivo di questo è che quando si interroga una vista materializzata, si sta interrogando una tabella, che può anche essere indicizzata. Inoltre, poiché tutti i join sono stati risolti nel momento di aggiornamento della visualizzazione materializzata, si paga il prezzo del join una volta (o tutte le volte che si aggiorna la vista materializzata), anziché ogni volta che si seleziona dalla vista materializzata. Inoltre, con la funzione di riscrittura delle query abilitata, Oracle è in grado di ottimizzare una query che seleziona dall'origine della vista materializzata in modo tale da leggere invece dalla vista materializzata. Nelle situazioni in cui crei viste materializzate come moduli di tabelle aggregate o come copie di query eseguite frequentemente, ciò può velocizzare notevolmente i tempi di risposta dell'applicazione dell'utente finale. Lo svantaggio è che i dati che si ottengono dalla vista materializzata sono aggiornati solo l'ultima volta che la vista materializzata è stata aggiornata.

Le viste materializzate possono essere impostate per l'aggiornamento manuale, su una pianificazione impostata o in base al database che rileva una modifica dei dati da una delle tabelle sottostanti. Le viste materializzate possono essere aggiornate in modo incrementale combinandole con registri di visualizzazione materializzati, che fungono da fonti di acquisizione dei dati sulle tabelle sottostanti.

Le viste materializzate sono più spesso utilizzate nelle applicazioni di data warehousing / business intelligence dove l'interrogazione di tabelle di fatti di grandi dimensioni con migliaia di milioni di righe comporterebbe tempi di risposta alle query che hanno portato a un'applicazione inutilizzabile.

Question

Qual è la differenza tra visualizzazioni e viste materializzate in Oracle?




Le viste sono essenzialmente strutture logiche simili a tabelle popolate al volo da una determinata query. I risultati di una query di visualizzazione non vengono memorizzati in nessun punto sul disco e la vista viene ricreata ogni volta che viene eseguita la query. Le viste materializzate sono strutture effettive memorizzate nel database e scritte sul disco. Vengono aggiornati in base ai parametri definiti al momento della creazione.




Visualizza: la vista è solo una query con nome. Non memorizza nulla. Quando c'è una query sulla vista, esegue la query della definizione della vista. I dati effettivi provengono dalla tabella.

Viste materializzate: memorizza i dati fisicamente e viene aggiornato periodicamente. Durante l'interrogazione di MV, fornisce dati da MV.




Aggiungendo la risposta piuttosto accurata di Mike McAllister ...

Le viste materializzate possono essere impostate per l'aggiornamento automatico solo attraverso il database che rileva le modifiche quando la query di visualizzazione viene considerata semplice dal compilatore. Se è considerato troppo complesso, non sarà in grado di impostare quali sono essenzialmente i trigger interni per tenere traccia delle modifiche nelle tabelle di origine per aggiornare solo le righe modificate nella tabella di mview.

Quando crei una vista materializzata, scoprirai che Oracle crea sia la mview che una tabella con lo stesso nome , il che può rendere le cose confuse.




Related