Perché non utilizzare una tabella anziché una vista materializzata?


53

Sono nuovo dei database Oracle. Se ho capito bene, la vista materializzata è una vista il cui set di risultati viene salvato come tabella fisica nel database e questa vista / tabella viene aggiornata in base ad alcuni parametri. Se la vista viene salvata come tabella fisica, perché non archiviare i dati in una tabella? Quindi qual è il vantaggio dell'utilizzo della vista materializzata anziché di una tabella?

Risposte:


59

Uno dei maggiori vantaggi dell'utilizzo di una vista materializzata è che Oracle si occupa di mantenere sincronizzati i dati. Se hai una tabella aggregata separata, sei responsabile di mantenere sincronizzati i dati. Ciò generalmente richiede una ragionevole quantità di codice e una discreta quantità di test e la maggior parte delle organizzazioni riesce a fare errori che lasciano buchi che causano la sincronizzazione della tabella aggregata. Ciò è particolarmente vero quando si tenta di implementare aggiornamenti incrementali della tabella aggregata.

Un altro grande vantaggio è che, a seconda delle impostazioni, Oracle può utilizzare la riscrittura delle query per utilizzare viste materializzate quando gli utenti eseguono query su tabelle di base. Pertanto, ad esempio, se si dispone di un sacco di report esistenti rispetto a una tabella dei dettagli che producono risultati aggregati giornalieri, mensili e annuali, è possibile creare una vista materializzata sulla tabella di base che aggrega i dati a livello giornaliero e l'ottimizzatore può utilizzare quella vista materializzata per tutte le query esistenti. Ciò semplifica notevolmente l'ottimizzazione dei carichi di lavoro di reporting in un data warehouse senza tentare di andare a riscrivere dozzine di report per utilizzare la nuova tabella aggregata o fare confusione DBMS_ADVANCED_REWRITEper forzare la riscrittura delle query.


14

Le viste materializzate vengono automaticamente aggiornate man mano che le loro tabelle di base vengono aggiornate.


1
Si noti che ON DEMANDè il comportamento di aggiornamento predefinito. La vista materializzata deve essere creata con ON COMMIT. e mantenere la vista materializzata non è gratuito. Tuttavia, è probabilmente più economico di un grilletto.
Durette,

10

Un buon caso per l'utilizzo di MV è che alcune volte si desidera aggregare dati e ottenere queste informazioni di riepilogo da tabelle di grandi dimensioni frequentemente e rapidamente. Senza viste materializzate, devi deonormalizzare alcune delle tue tabelle e mantenere gli aggregati tramite codice o scansionare ripetutamente grandi gruppi di righe. In entrambi i casi non è sempre accettabile specialmente con dashboard e applicazioni online simili. Se si mantengono i risultati in tabelle separate, si complica il codice dell'applicazione e, come dice @Justin Cave, sarà responsabile di assicurarsi che i dati aggregati manualmente siano sincronizzati. con i dati della tabella originale.


4

Non una persona Oracle, ma un altro caso d'uso sarebbe soluzioni di terze parti. Generalmente non ti supportano nell'effettuare modifiche ai loro progetti, ma un MV sarebbe "invisibile" al loro codice ma fornirebbe accesso a report personalizzati / estratti di dati.

Non è gratuito in quanto avrà costi di archiviazione e costi di inserimento / aggiornamento potenzialmente impattanti, ma ciò potrebbe essere compensato dal tempo impiegato per il recupero dei dati materializzati rispetto a una "vista diretta" o la creazione di tabelle effettive e il mantenimento dell'ETL circostante.

Infine, ciò potrebbe annullare il contratto di supporto con il venditore, consultare il proprio avvocato-blah-blah-blah


2

Invece di andare direttamente alle viste materializzate, lasciami spiegare le viste .

Fondamentalmente le visualizzazioni esistono logicamente diversamente dalle tabelle. Se vogliamo nascondere determinate colonne agli utenti non possiamo fare uso delle tabelle. Creando una vista possiamo raggiungere la sicurezza.

Caso d'uso: se una vista è internamente correlata a 10 tabelle insieme a raggruppa per e le funzioni hanno milioni di righe, l'esecuzione richiede molto tempo.

Quindi ecco che le viste materializzate ci aiutano a ottenere i dati più velocemente. Le viste materializzate sono fisicamente presenti nel database. Ogni volta che la tabella di base viene aggiornata, la vista materializzata viene aggiornata.

Le viste materializzate vengono aggiornate periodicamente in base alla definizione della query, la tabella non può farlo.


0

Una vista materializzata può essere impostata per l'aggiornamento automatico su base periodica. Una tabella potrebbe richiedere codice aggiuntivo per troncare / ricaricare i dati.

esempio: la vista materializzata con dati da più tabelle può essere impostata per l'aggiornamento automatico durante le ore non di punta. Una tabella fisica avrebbe bisogno di un codice aggiuntivo per troncare / ricaricare i dati.

La sicurezza può essere controllata meglio in una vista materializzata piuttosto che in una tabella.


0

Una vista materializzata è un oggetto database che contiene i risultati di una query. Sono copie locali dei dati localizzate in remoto o vengono utilizzate per creare tabelle di riepilogo basate su aggregazioni dei dati di una tabella. http://www.oraappdata.com/2016/04/materialized-view.html


1
Si noti che la domanda non riguardava cosa fosse una vista materializzata, ma perché e come usarla.
Scintilla il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.