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

konto usunięte

Temat: [Oracle] rozczarowanie związane z Materialized Views...

A czy brałeś pod uwagę inną instancję na której prowadził byś BI?
Z doświadczenia wiem, że takie specyficzne, podkręcone, zapytania nie są tak istotne, dla danych "gorących". Warto więc pomyśleć o jakim przenoszeniu(podlinkowanie łącza do bazy produkcyjnej w bazie "do analiz") do innej instancji, na innym serwerze... zagregowanych wstępnie zapytań(mogą być jako "snapshots"). W przeciwnym wypadku, to walka z wiatrakami. :) (trudno wytłumaczyć "laikowi" z kontrolingu, że to coś pomiędzy bazą a serwerem). Powodzenia.
Marek Kubiś

Marek Kubiś programista c#

Temat: [Oracle] rozczarowanie związane z Materialized Views...

Zapytanie SQL albo jest wykonywane (ułamek czasu z całości) albo oczekuje (zdecydowana większość czasu), na dane, na zwolnienie zasobu, na .. . Wypada to prześledzić.

Jeżeli indeksowane widoki nie poprawiły wydajności tzn. że najprawdopodobniej projekt bazy wymaga udoskonalenia. Po prostu wypada sprawdzić czy indeksy są prawidłowo zdefiniowane, a w szczególności gdzie tych indeksów brak, wypada sprawdzić poprawność zagnieżdżania transakcji, itp. . Ponadto istotny styl programowania bo subquery są wolniejsze niż joiny, jak intensywnie wykorzystywane są tymczasowe tabele i czy aby nie da się z nich zrezygnować, itp. Kluczem nie te najdłużej wykonujące się zapytania ale zapytania, tabele najczęściej wywoływane.

Następna dyskusja:

Oracle enums - czy są?




Wyślij zaproszenie do