Dit artikel gaat over materialized views en helpt u de mogelijkheden te benutten van Oracle 8I in Data Warehousing en DSS oplossingen. Deze views werken middels preberekening van de totale activiteiten en de optimizer zal transparant de query herschrijven om ze te gebruiken.
Inleiding Materialized views zijn opgeslagen samenvattingen van vooraf berekende resultaten. Materialized views verbeteren de data warehouse zoekopdracht processing. Het bestaan van een materialized view is transparant voor SQL toepassingen, zodat een DBA op ieder moment de materialized view kan droppen of aanmaken zonder afbreuk te doen aan de geldigheid van SQL-toepassingen.
Materialized views verbeteren de performance van requests middels het voorberekenen van dure join en aggretation werkzaamheden op te slaan in de database voordat de opdracht uitgevoerd. De query optimizer kan gebruik maken van de materialized views door automatisch te herkennen wanneer een bestaande materialized view kan en moet worden gebruikt om te voldoen aan een request. Daarna herschrijft het het request om gebruik te gaan maken van de materialized view. Requests worden dan omgeleid naar de materialized view en niet naar onderliggende detail tabellen of views. Herschrijven van requests om materialized view te gaan gebruiken in plaats van de werkelijke objecten resulteert in een significante winst. Materialized views kunnen automatisch refreshed worden wanneer de data van de onderliggende tabellen word veranderd. De refresh methode kan incremental zijn (fast refresh) of complete. Incremental verandert alleen de veranderde data. De complete refresh doet een truncate en rebuild van de view. Het refresh proces kan aangezet worden door de REFRESH clause mee te geven bij het aanmaken van de materialized view. Je kunt het refresh proces voor de gehele duur van de view blokkeren. Voorbeeld Het volgende statement creëert en vult de materialized view SALES_BY_MONTH_BY_STATE. De materialized view zal gevuld worden met data als het statement succesvol is uitgevoerd. De refreshes zullen gedaan worden na een re-execute van de query waaruit de materialzed view bestaat. CREATE MATERIALIZED VIEW sales_by_month_by_state TABLESPACE my_ts PARALLEL (10) ENABLE QUERY REWRITE BUILD IMMEDIATE REFRESH COMPLETE AS SELECT t.month, g.state, SUM(sales) AS sum_sales FROM fact f, time t, geog g WHERE f.cur_date = t.cur_date AND f.city_id = g.city_id GROUP BY month, state;
De fact tabel bevat de eigenlijke data betreffende de “sales by month and state”, de time tabel heeft de “day, month, year “ waarden en de geog tabel bevat de “state” namen. Deze view word aangemaakt en gelijk gevuld. We gaan er vanuit dat we hebben “gevraagd” dat Oracle dezelfde waarden heeft laten calculeren in een query en als query rewrite is enabled op de server dan zal de optimizer automatisch de vooraf berekende waarden van de view gebruiken. LET OP: VOORWAARDEN Materialized views gebruiken ruimte. Draag er zorg voor om storage parameters mee te geven die voldoen aan de data die het moet gaan bevatten. Er kunnen geen functions zoals UNION, MINUS in de onderliggende materialized views voorkomen.
|