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

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

Le viste materializzate sono basate su disco e vengono aggiornate periodicamente in base alla definizione della query.

Le viste sono solo virtuali ed eseguono la definizione della query ogni volta che si accede a esse.

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.

Una vista utilizza una query per estrarre i dati dalle tabelle sottostanti.

Una vista materializzata è una tabella su disco che contiene il set di risultati di una query.

Le viste materializzate vengono principalmente utilizzate per aumentare le prestazioni dell’applicazione quando non è fattibile o desiderabile utilizzare una vista standard con indici applicati. Le viste materializzate possono essere aggiornate regolarmente tramite trigger o utilizzando l’opzione ON COMMIT REFRESH . Ciò richiede alcune autorizzazioni extra, ma non è niente di complesso. ON COMMIT REFRESH è in vigore da almeno Oracle 10.

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.

Vista materializzata : una tabella su un disco che contiene il set di risultati di una query

Vista non di serie : una query che estrae i dati dalla tabella sottostante

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.

Una vista non è altro che una query SQL, prende l’output di una query e la fa apparire come una tabella virtuale, che non occupa spazio di archiviazione o contiene dati

Ma le viste materializzate sono oggetti schema, memorizzano i risultati di una query in un object schema separato (ad esempio, occupano spazio di archiviazione e contengono dati). Ciò indica che la vista materializzata sta restituendo una copia fisicamente separata dei dati della tabella