sql >> Database >  >> RDS >> Oracle

Wat zijn gematerialiseerde opvattingen?

Zeker.

Een normale weergave is een query die een virtuele tabel definieert - u heeft de gegevens niet echt in de tabel, u maakt deze direct door deze uit te voeren.

Een gerealiseerde weergave is een weergave waarin de query wordt uitgevoerd en de gegevens worden opgeslagen in een werkelijke tabel.

De gegevens in de gerealiseerde weergave worden vernieuwd wanneer u dit opdraagt.

Een paar gebruiksscenario's:

  • We hebben meerdere Oracle-instanties waarvan we de mastergegevens op één instantie willen hebben en een redelijk actuele kopie van de gegevens op de andere instanties. We willen er niet van uitgaan dat de databasekoppelingen ertussen altijd actief zullen zijn. Dus hebben we gematerialiseerde weergaven opgezet voor de andere instanties, met zoekopdrachten zoals select a,b,c from [email protected] en vertel ze dat ze dagelijks moeten vernieuwen.

  • Gematerialiseerde weergaven zijn ook nuttig bij het herschrijven van query's. Stel dat u een feitentabel in een datawarehouse heeft met elk boek dat ooit uit een bibliotheek is geleend, met datums en leners. En dat personeel regelmatig wil weten hoe vaak een boek is uitgeleend. Bouw vervolgens een gematerialiseerde weergave als select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name , stel het in voor elke gewenste updatefrequentie - meestal de updatefrequentie voor het magazijn zelf. Als iemand nu zo'n query uitvoert voor een bepaald boek tegen de book_trans tabel, zal de herschrijfmogelijkheid voor query's in Oracle slim genoeg zijn om naar de gematerialiseerde weergave te kijken in plaats van door de miljoenen rijen in book_trans te lopen .

Gewoonlijk bouw je gematerialiseerde weergaven om prestatie- en stabiliteitsredenen - schilferige netwerken of lange query's buiten kantooruren.



  1. MySQL-query doorgeven via Javascript

  2. Replicatie tussen SQL Server en MYSQL

  3. Selecteer op maand van een veld

  4. Bepaal of een transactie actief is (Postgres)