Oracle
 sql >> Database >  >> RDS >> Oracle

Cosa sono le viste materializzate?

Certo.

Una vista normale è una query che definisce una tabella virtuale:in realtà non hai i dati nella tabella, li crei al volo eseguendo.

Una vista materializzata è una vista in cui la query viene eseguita e i dati vengono salvati in una tabella effettiva.

I dati nella vista materializzata vengono aggiornati quando glielo dici.

Un paio di casi d'uso:

  • Abbiamo più istanze Oracle in cui desideriamo avere i dati master su un'istanza e una copia ragionevolmente aggiornata dei dati sulle altre istanze. Non vogliamo presumere che i collegamenti al database tra di loro saranno sempre attivi e operativi. Quindi abbiamo impostato viste materializzate sulle altre istanze, con query come select a,b,c from [email protected] e dì loro di aggiornarsi ogni giorno.

  • Le viste materializzate sono utili anche nella riscrittura delle query. Supponiamo che tu abbia una tabella dei fatti in un data warehouse con ogni libro mai preso in prestito da una biblioteca, con date e mutuatari. E quel personale vuole regolarmente sapere quante volte un libro è stato preso in prestito. Quindi crea una vista materializzata come select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name , impostalo per la frequenza di aggiornamento che desideri, in genere la frequenza di aggiornamento per il magazzino stesso. Ora, se qualcuno esegue una query del genere per un libro particolare rispetto a book_trans tabella, la capacità di riscrittura delle query in Oracle sarà abbastanza intelligente da guardare la vista materializzata piuttosto che attraversare i milioni di righe in book_trans .

Di solito, stai creando viste materializzate per motivi di prestazioni e stabilità:reti traballanti o lunghe query fuori orario.