Michał Kowalski Bazy danych
Temat: [Oracle] rozczarowanie związane z Materialized Views...
Witam,od pewnego czasu wyczekiwałem momentu, gdy będę mógł przyśpieszyć działanie bazy raportowej korzystając migawek.
Co godzinę "moja" baza Oracle 11g jest updatowana inserty i delete'y na około dziesięciu podstawowych tabelach.
Potem z wykorzystaniem ok 80 procedur, 300 widoków i 160 tabel zapewniam raportowanie w firmie której jestem zatrudniony.
Działa to za wolno (często powodem są pełne przeliczenia całych tabel/widoków) , w przypadku pewnych widoków koszmarnie wolno, dlatego pewne agregaty i tabele przeliczeniowe chciałem zastąpić widokami zmaterializowanymi odświeżanymi w ciągu dnia w trybie FAST raz w nocy trybem COMPLETE.
Nadzieja na lepsze jutro rozwiała się gdy doczytałem, że odświeżenie przyrostowe jest dostępne tylko dla "prostych" MV, najlepiej opartych tylko na jednej tabeli.
Zanim się za to zabrałem myślałem że wystarczy zapewnienie logowania wszystkim tabelom i ich polom mających wpływ na zapytanie, a okazuje się że nic z tego.
Jedyne co udało mi się znaleźć to korzytanie za podzapytań skorelowanych (EXISTS), ale to wpłynie tylko na ograniczenie liczby procedowanych wierszy ze snapshotowanej tabeli, nie ma szanas na dorzucenie pól z innych tabel...
podzapytaniem skorelowanym
Czy naprawdę nie ma sposobów by to obejść?
W dużej mierze opierałem się na tym artykule:
http://www.ploug.org.pl/plougtki.php?action=read&p=21&a=1
i na próbach we własnym zakresie
Mam jeszcze jedno pytanie czy dla "skomplikowanych" zapytań, czyli takich, które korzystają z pół z więcej niż jednej tabeli odświeżanie migawki w trybie COMPLETE ma szansę przeliczyć się szybciej niż gdyby wykonać zapytanie w nim zaszyte w normalnym trybie? Czy dane odkładane w logach w jakiś sposób przyśpieszą selecta? Czy nie ma co na to liczyć?Ten post został edytowany przez Autora dnia 01.04.16 o godzinie 16:57