Zarządzanie buforowaniem zapytań

Oracle Analytics Cloud utrzymuje w pamięci podręcznej lokalną pamięć podręczną z wynikami zapytań.

Tematy:

Pamięć podręczna zapytań - informacje podstawowe

Pamięć podręczna zapytań Oracle Analytics Cloud pozwala spełniać wiele kolejnych zapytań bez uzyskiwania dostępu do źródeł danych z zaplecza i tym samym zwiększa wydajność zapytań. Wpisy w pamięci podręcznej mogą jednak ulec dezaktualizacji, jeśli w źródłach danych z zaplecza wystąpią jakieś zmiany.

Korzyści wynikające z korzystania z pamięci podręcznej

Najszybszym sposobem przetworzenia zapytania jest pominięcie procesu jego przetwarzania i użycie gotowej odpowiedzi.

Oracle Analytics Cloud przechowuje w lokalnej pamięci podręcznej wyniki uzyskane dla zapytań. Jeśli z wyników tych będzie mogło skorzystać inne zapytanie, to proces przetwarzania w bazie danych dla tego zapytania jest eliminowany. Może to się przyczynić do radykalnego skrócenia średniego czasu odpowiedzi na zapytanie.

Zdolność udzielenia odpowiedzi na zapytanie przy użyciu lokalnej pamięci podręcznej nie tylko poprawia wydajność, ale także oszczędza zasoby sieciowe i skraca czas przetwarzania w serwerze bazy danych. Zasoby sieciowe są oszczędzane, ponieważ do Oracle Analytics Cloud nie są zwracane wyniki pośrednie. Niewykonywanie zapytania w bazie danych odciąża serwer bazy danych i pozwala zająć mu się innymi zadaniami. Jeśli dla bazy danych jest używany system opłat, to wykonywanie mniejszej liczby zapytań może się przyczynić do zmniejszenia kosztów.

Inną korzyścią z używania pamięci podręcznej do udzielania odpowiedzi na zapytanie jest oszczędność czasu przetwarzania w Oracle Analytics Cloud, zwłaszcza jeśli wyniki są pobierane z więcej niż jednej bazy danych. W zależności od zapytania może występować na serwerze znaczące przetwarzanie złączeń i sortowania. Jeśli zapytanie jest już obliczone, przetwarzanie to jest eliminowane i zasoby serwera są zwalniane do wykonywania innych zadań.

Podsumowując, korzystanie z pamięci podręcznej (buforowanie) może radykalnie poprawić wydajność zapytań, zmniejszyć ruch w sieci, ograniczyć przetwarzanie w bazie danych oraz zredukować obciążenia związane z przetwarzaniem.

Koszty korzystania z pamięci podręcznej

Korzystanie z pamięci podręcznej przynosi wiele oczywistych korzyści, ale także pociąga za sobą pewne koszty.

  • Potencjalna możliwość dezaktualizacji wyników w pamięci podręcznej

  • Koszty administracyjne, związane z zarządzaniem pamięcią podręczną

Przy odpowiednim zarządzaniu pamięcią podręczną, korzyści są o wiele większe niż koszty.

Zadania administracyjne powiązane z pamięcią podręczną

Niektóre zadania administracyjne są związane z pamięcią podręczną. Trzeba odpowiednio ustawić czas utrwalania pamięci podręcznej dla każdej z tabel fizycznych, wiedząc, jak często dane w tych tabelach są aktualizowane.

Jeśli częstotliwość aktualizacji zmienia się, trzeba pilnować zmian i - gdy będzie to potrzebne - ręcznie opróżniać pamięć podręczną.

Dbanie o aktualność pamięci podręcznej

Jeśli wpisy w pamięci podręcznej nie zostaną skasowane, gdy ulegną zmianie dane w używanych bazach danych, to potencjalnie zapytania będą mogły zwracać nieaktualne wyniki.

Trzeba ocenić, czy jest to akceptowalne. Może być dopuszczalne, aby w pamięci podręcznej były przechowywane niektóre przestarzałe dane. Trzeba zdecydować, jaki poziom przestarzałych danych jest akceptowalny, po czym skonfigurować i stosować zbiór założeń systemowych odzwierciedlających te poziomy.

Na przykład załóżmy, że aplikacja analizuje dane firmowe z dużego konglomeratu, a my dokonujemy rocznych podsumowań różnych działów firmy. Nowe dane wpływają w istotny sposób na zapytania, ponieważ mają wpływ jedynie na podsumowania w przyszłym roku. W tym przypadku pozostawienie wpisów w pamięci podręcznej może być bardziej opłacalne niż jej opróżnienie.

Załóżmy jednak, że bazy danych są aktualizowane trzy razy dziennie oraz że kierujemy zapytania dotyczące działań w bieżącym dniu. W takim przypadku trzeba opróżniać pamięć podręczną znacznie częściej lub - być może - rozważyć zrezygnowanie z niej.

W innym scenariuszu zbiór danych jest na nowo konstruowany w okresowych interwałach, na przykład raz na tydzień. W takim przypadku można w ramach procesu ponownego konstruowania zbioru danych opróżnić całą pamięć podręczną, uzyskując pewność, że w pamięci podręcznej nie ma przestarzałych danych.

Bez względu na konkretną sytuację trzeba oszacować, czy jest akceptowalne zwracanie nieaktualnych danych użytkownikom.

Współużytkowanie pamięci podręcznej przez użytkowników

Jeśli dla określonej puli połączeń jest włączone logowanie współużytkowane, to pamięć podręczna może być współużytkowana i nie trzeba jej wypełniać osobno dla poszczególnych użytkowników.

Jeśli logowanie współużytkowane nie je włączone i jest używane logowanie do bazy danych przez indywidualnych użytkowników, to każdy z nich generuje swój własny wpis w pamięci podręcznej.

Włączanie lub wyłączanie buforowania zapytań

W Oracle Analytics Cloud pamięć podręczna zapytań jest domyślnie włączona. Buforowanie zapytań można włączyć lub wyłączyć na stronie Zaawansowane ustawienia systemowe.

  1. Wybrać opcję Konsola.
  2. Kliknąć Zaawansowane ustawienia systemowe.
  3. Wybrać opcję wydajność i zgodność.
  4. Ustawić opcję Włączona pamięć podręczna na "on" (wł.) lub "off" (wył.).
    • Wł. - buforowanie zapytań dot. danych jest włączone.
    • Wył. - buforowanie jest wyłączone.
  5. Kliknąć Zastosuj.
    Odczekać kilka minut na wprowadzenie zmian w całym systemie.

Monitorowanie pamięci podręcznej i zarządzanie nią

Chcąc skutecznie zarządzać zmianami w używanych bazach danych i monitorować wpisy w pamięci podręcznej, trzeba opracować strategię zarządzania pamięcią podręczną.

Potrzebny jest proces unieważniania wpisów w pamięci podręcznej, gdy ulegną zmianie dane używane w tabelach składających się na wpis w pamięci podręcznej, oraz proces monitorowania, identyfikowania i usuwania wszelkich niepożądanych wpisów.

Omówiono tu następujące tematy:

Wybór strategii zarządzania pamięcią podręczną

Wybór strategii zarządzania pamięcią podręczną zależy od zmienności danych w używanych bazach danych oraz zdolności przewidywania tych zmian.

Zależy także od liczby i typów zapytań wypełniających pamięć podręczną oraz stopnia ich używania. W tej części zawarto przegląd różnych strategii zarządzania pamięcią podręczną.

Wyłączanie buforowania dla systemu

Można wyłączyć buforowanie dla całego systemu, zatrzymując wprowadzanie wszystkich nowych wpisów do pamięci podręcznej i zatrzymując korzystanie z pamięci podręcznej przez wszystkie nowe zapytania. Po wyłączeniu buforowania można je później włączyć, nie tracąc przy tym żadnych wpisów przechowywanych w pamięci podręcznej.

Tymczasowe wyłączenie buforowania jest strategią przydatną, gdy podejrzewamy, że w pamięci podręcznej są przestarzałe wpisy, ale przed ich skasowaniem lub opróżnieniem całej pamięci podręcznej chcemy je zweryfikować. Jeśli się okaże, że dane w pamięci podręcznej są nadal właściwe, lub jeśli bezpiecznie skasujemy przestarzałe wpisy, to będziemy mogli spokojnie włączyć buforowanie. Jeśli trzeba, można przed włączeniem buforowania opróżnić cała pamięć podręczną lub tylko tę, która jest powiązana z określonym modelem biznesowym.

Buforowanie i czas utrwalania buforowania dla określonych tabel fizycznych

Dla każdej tabeli fizycznej można ustawić atrybut "Może być buforowane" pozwalający określić, czy zapytania dotyczące tej tabeli będą dodawane do pamięci podręcznej w celu udzielania odpowiedzi na przyszłe zapytania.

Jeśli dla tabeli zostanie włączone buforowanie, to każde zapytanie obejmujące tę tabelę będzie dodawane do pamięci podręcznej. Wszystkie tabele są domyślnie buforowane, lecz niektóre mogą nie być dobrymi kandydatami do umieszczenia w pamięci podręcznej, chyba że zostaną skonfigurowane odpowiednie ustawienia utrwalania pamięci podręcznej. Na przykład istnieje tabela, w której są przechowywane dane giełdowe, aktualizowane co minutę. Można określić, że wpisy dla tej tabeli mają być kasowane co 59 sekund.

Za pomocą ustawień utrwalania pamięci podręcznej można także określić, jak długo wpisy dla tej tabeli mają być przechowywane w pamięci podręcznej zapytań. Jest to przydatne w przypadku źródeł danych, które są często aktualizowane.

  1. W narzędziu Model Administration Tool dwukrotnie kliknąć (w warstwie fizycznej) tabelę fizyczną.

    Jeśli jest używane narzędzie Semantic Modeler, zob What Are a Physical Table's General Properties?.

  2. W oknie dialogowym właściwości tabeli fizycznej dokonać na karcie "Ogólne" jednego z następujących wyborów:

    • Aby włączyć buforowanie, zaznaczyć pole wyboru Może być buforowane.

    • Aby zapobiec buforowaniu tabeli, wyczyścić pole wyboru Może być buforowane.

  3. Aby określić czas, po którym wpis w pamięci podręcznej wygasa, określić Czas utrwalania pamięci podręcznej oraz jednostkę miary (dni, godziny, minuty lub sekundy). Jeśli wpisy w pamięci podręcznej nie mają automatycznie wygasać, wybrać opcję Pamięć podręczna nigdy nie wygasa.

  4. Kliknąć OK.

W jaki sposób zmiany dokonywane w modelu semantycznym wpływają na pamięć podręczną zapytań

Jeśli modele semantyczne są modyfikowane za pomocą narzędzia Semantic Modeler lub narzędzia Model Administration Tool, to dokonywane zmiany wpływają na wpisy przechowywane w pamięci podręcznej. Na przykład, jeśli zostanie zmieniona definicja obiektu fizycznego lub dynamicznej zmiennej modelu semantycznego, to wpisy w pamięci podręcznej, które odwołują się do tego obiektu lub tej zmiennej, mogą stać się niepoprawne. Zmiany te mogą wymagać opróżnienia pamięci podręcznej. Istnieją dwie sytuacje, o których należy pamiętać: zmiana istniejącego modelu semantycznego lub utworzenie (bądź wysłanie) nowego modelu semantycznego.

Zmiany w modelu semantycznym

Jeśli model semantyczny zostanie zmodyfikowany albo zostanie wysłany inny plik .rpd, to wszelkie zmiany wpływające na wpisy w pamięci podręcznej automatycznie powodują opróżnienie pamięci podręcznej ze wszystkich wpisów odwołujących się do zmienionych obiektów. Opróżnienie nastąpi, gdy zmiany zostaną wysłane. Na przykład, jeśli z modelu semantycznego zostanie usunięta tabela fizyczna, to - po zarejestrowaniu modelu - z pamięci podręcznej zostaną usunięte wszystkie wpisy odwołujące się do tej tabeli. Wszelkie zmiany dokonywane w modelu semantycznym w warstwie logicznej powodują opróżnienie pamięci podręcznej ze wszystkich wpisów dla tego modelu.

Zmiany w globalnych zmiennych modelu semantycznego

Wartości globalnych zmiennych modelu semantycznego są odświeżane na podstawie danych zwracanych przez zapytania. Definiując globalną zmienną modelu semantycznego, tworzy się blok inicjalizacyjny albo używa bloku już istniejącego, zawierającego zapytanie SQL. Można także skonfigurować harmonogram uruchamiania zapytania i okresowego odświeżania wartości danej zmiennej.

Jeśli wartość globalnej zmiennej modelu semantycznego zmieni się, to wszystkie wpisy w pamięci podręcznej, używające tej zmiennej w kolumnie, ulegną dezaktualizacji i - gdy dane z takiego wpisu będą znów potrzebne - zostanie wygenerowany nowy wpis w pamięci podręcznej. Stary wpis nie jest od razu usuwany z pamięci podręcznej, lecz pozostaje w niej, aż zostanie usunięty przez zwykły mechanizm czyszczenia pamięci podręcznej.

Strategie używania pamięci podręcznej

Jedną z głównych korzyści buforowania zapytań jest znacząca poprawa wydajności zapytań.

Buforowanie zapytań może być wykorzystywane do wypełnienia pamięci podręcznej poza godzinami szczytu poprzez uruchamianie zapytań i wprowadzanie ich wyników do pamięci podręcznej. Dobra strategia wypełniania pamięci podręcznej wymaga wiedzy, kiedy następują trafienia w pamięci podręcznej.

Zamierzając wypełnić pamięć podręczną dla wszystkich użytkowników, można użyć następującego zapytania:

SELECT User, SRs

Gdy pamięć podręczna zostanie wypełniona przy użyciu zapytania SELECT User, SRs, następujące zapytania będą stanowić trafienia w pamięci podręcznej:

SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (użytkownikiem był USER1)
SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (użytkownikiem był USER2)
SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (użytkownikiem był USER3)

Omówiono tu następujące tematy:

Trafienia w pamięci podręcznej - informacje podstawowe

Gdy jest włączone buforowanie (przechowywanie w pamięci podręcznej), każde zapytanie jest oceniane w celu ustalenia, czy kwalifikuje się do trafienia w pamięci podręcznej.

Trafienie w pamięci podręcznej oznacza, że Oracle Analytics Cloud była w stanie użyć pamięci podręcznej do odpowiedzenia na zapytanie i nie przechodziła do bazy danych. Oracle Analytics Cloud może używać pamięci podręcznej zapytań do udzielania odpowiedzi na zapytania na tym samym lub wyższym poziomie agregacji.

O trafieniu w pamięci podręcznej decyduje wiele czynników. Zostały one opisane w poniższej tabeli.

Czynnik lub reguła Opis

Musi być zgodny podzbiór kolumn z listy SELECT

Aby można było uznać za trafienie w pamięci podręcznej, muszą w buforowanym zapytaniu istnieć wszystkie kolumny z listy SELECT nowego zapytania albo musi być możliwe obliczenie ich z kolumn z zapytania.

Ta reguła opisuje minimalny wymóg dotyczący trafienia w pamięci podręcznej, lecz spełnienie tej reguły nie gwarantuje trafienia. Mają zastosowanie także inne reguły wymienione w tej tabeli.

Kolumny z listy SELECT mogą być tworzone przy użyciu wyrażeń odnoszących się do kolumn z buforowanych zapytań

Oracle Analytics Cloud, aby odpowiedzieć na nowe zapytanie, może obliczyć wyrażenia z użyciem buforowanych wyników, lecz w buforowanym wyniku muszą się znajdować wszystkie te kolumny. Na przykład zapytanie:

SELECT product, month, averageprice FROM sales WHERE year = 2000

ma trafienie w pamięci podręcznej, wynikające z zapytania:

SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000

ponieważ averageprice można obliczyć z dollars i unitsales (averageprice = dollars/unitsales).

Klauzula WHERE musi być semantycznie identyczna lub stanowić podzbiór logiczny

Aby zapytanie mogło zostać zakwalifikowane jako trafienie w pamięci podręcznej, więzy klauzuli WHERE muszą być równoważne więzom w buforowanym wyniku lub jego podzbiorze.

Klauzula WHERE, będąca podzbiorem logicznym buforowanego zapytania, kwalifikuje się jako trafienie w pamięci podręcznej, jeśli podzbiór spełnia jedno z następujących kryteriów:

  • Podzbiór wartości z listy IN. Zapytania wymagające mniejszej liczby elementów z listy IN buforowanego zapytania kwalifikują się jako trafienia. Na przykład następujące zapytanie:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('EAST', 'WEST')

    kwalifikuje się jako trafienie w związku z następującym buforowanym zapytaniem:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('NORTH', 'SOUTH', 'EAST', 'WEST')
  • Zawiera mniej identycznych więzów OR niż buforowany wynik.

  • Zawiera podzbiór logiczny porównania literałowego. Na przykład następujący predykat:

    WHERE revenue < 1000

    kwalifikuje się jako trafienie w pamięci podręcznej w związku z porównywalnym zapytaniem z predykatem:

    WHERE revenue < 5000
  • Nie ma klauzuli WHERE. Jeśli jest buforowane zapytanie niemające klauzuli WHERE, to zapytania spełniające wszystkie pozostałe reguły trafienia w pamięci podręcznej - bez względu na ich klauzulę WHERE - kwalifikują się jako trafienia.

Dodatkowo kolumny, które są używane w klauzuli WHERE, muszą się znajdować na liście rzutowania. Na przykład następujące zapytanie:

SELECT employeename
FROM employee, geography
WHERE region in ('EAST', 'WEST')

nie stanowi trafienia w pamięci podręcznej związanego z zapytaniem wypełniającym na poprzedniej liście, ponieważ na liście rzutowania nie ma kolumny REGION.

Zapytania tylko z wymiarami muszą być w pełni zgodne

Jeśli zapytanie jest zapytaniem tylko z wymiarami, tj. w zapytaniu nie są zawarte żadne fakty ani miary, to trafienie w pamięci podręcznej ma miejsce tylko przy pełnej zgodności kolumn rzutowania z zapytania buforowanego. Takie działanie zapobiega wynikom fałszywie pozytywnym, gdy dla tabeli wymiarów istnieje więcej niż jedno źródło logiczne.

Zapytania z funkcjami specjalnymi muszą być w pełni zgodne

Inne zapytania zawierające funkcje specjalne, takie jak funkcje ciągów czasowych (AGO, TODATE i PERIODROLLING), funkcje ograniczające i funkcje przesunięcia (OFFSET i FETCH), funkcje relacji (ISANCESTOR, ISLEAF, ISROOT i ISSIBLING), zewnętrzne funkcje agregacji oraz miary filtrowania ogólnego muszą być w pełni zgodne z kolumnami rzutowania z buforowanego zapytania. W tych przypadkach także i filtr musi być w pełni zgodny. W przypadku miar filtrowania można wykorzystać pamięć podręczną podzbiorów, jeśli miary filtrowania można zapisać w formie klauzuli WHERE.

Zbiór tabel logicznych musi być zgodny

Wszystkie przychodzące zapytania, aby mogły zostać zakwalifikowane jako trafienie w pamięci podręcznej, muszą mieć ten sam zbiór tabel logicznych co buforowany wpis. Ta reguła zapobiega fałszywym trafieniom w pamięci podręcznej. Na przykład SELECT * FROM product nie jest zgodne z SELECT * FROM product, sales.

Wartości zmiennych sesyjnych, w tym zmiennych sesyjnych związanych z zabezpieczeniami, muszą być zgodne

Jeśli instrukcja fizycznego lub logicznego SQL odwołuje się do jakiejkolwiek zmiennej sesyjnej, to wartości zmiennych sesyjnych muszą być zgodne. W przeciwnym razie nie nastąpi trafienie w pamięci podręcznej.

Ponadto wartości zmiennych sesyjnych wrażliwych na zabezpieczenia muszą być zgodne ze zdefiniowanymi w modelu semantycznym wartościami zmiennych sesyjnych związanych z zabezpieczeniami, nawet jeśli instrukcja logicznego SQL nie odwołuje się do zmiennych sesyjnych. Zob. Zapewnienie właściwych wyników z pamięci podręcznej, gdy dla bazy danych są używane zabezpieczenia na poziomie wierszy.

Równoważne warunki złączenia

Powstająca wskutek nowego zapytania złączona tabela logiczna musi - aby została zakwalifikowana jako trafienie w pamięci podręcznej - być identyczna z buforowanymi wynikami albo stanowić ich podzbiór.

Atrybut DISTINCT musi być identyczny

Jeśli buforowane zapytanie eliminuje duplikaty za pomocą przetwarzania DISTINCT (na przykład SELECT DISTINCT...), to żądania dotyczące buforowanych kolumn muszą także zawierać przetwarzanie DISTINCT; żądanie dotyczące tej samej kolumny bez przetwarzania DISTINCT stanowi chybienie w pamięci podręcznej.

Zapytania muszą zawierać kompatybilne poziomy agregacji

Zapytania żądające zagregowanego poziomu informacji mogą korzystać z buforowanych wyników na niższym poziomie agregacji. Na przykład poniższe zapytanie ma uzyskać ilość sprzedaną na poziomie dostawcy, regionu oraz miejscowości:

SELECT supplier, region, city, qtysold
FROM suppliercity

Poniższe zapytanie uzyskuje ilość sprzedaną na poziomie miejscowości:

SELECT city, qtysold
FROM suppliercity

Drugie zapytanie stanowi trafienie w pamięci podręcznej, związane z pierwszym zapytaniem.

Ograniczona dodatkowa agregacja

Na przykład, jeśli zapytanie z kolumną qtysold jest buforowane, to żądanie RANK(qtysold) stanowi chybienie w pamięci podręcznej. Ponadto zapytanie żądające ilości qtysold na poziomie kraju może stanowić trafienie związane z zapytaniem żądającym ilości qtysold na poziomie kraju i regionu.

Klauzula ORDER BY musi się składać z kolumn z listy SELECT

Zapytania porządkujące wyniki według kolumn, które nie są zawarte w wynikach listy SELECT, stanowią chybienia w pamięci podręcznej.

Diagnozowanie funkcjonowania trafień w pamięci podręcznej

Chcąc lepiej ocenić funkcjonowanie trafień w pamięci podręcznej, należy ustawić zmienną sesyjną ENABLE_CACHE_DIAGNOSTICS na 4, jak pokazano w następującym przykładzie:

ENABLE_CACHE_DIAGNOSTICS=4

Zapewnienie właściwych wyników z pamięci podręcznej, gdy dla bazy danych są używane zabezpieczenia na poziomie wierszy

Jeśli jest używana strategia zabezpieczania bazy danych na poziomie wierszy (na przykład w wirtualnej prywatnej bazie danych - VPD), zwracane wyniki są zależne od uwierzytelnień autoryzacyjnych użytkownika.

Z tego powodu Oracle Analytics Cloud musi wiedzieć, czy dla źródła danych są używane zabezpieczenia bazy danych na poziomie wierszy oraz które zmienne są wrażliwe na zabezpieczenia.

Aby uzyskać pewność, że trafienia w pamięci podręcznej dotyczą tylko wpisów zawierających wszystkie zmienne wrażliwe na zabezpieczenia i są z nimi zgodne, trzeba w narzędziu Model Administration Tool poprawnie skonfigurować obiekt bazy danych i obiekty zmiennych sesyjnych, jak następuje:

  • Obiekt bazy danych. W warstwie fizycznej, wybrać na karcie "Ogólne" okna dialogowego "Baza danych" opcję Wirtualna prywatna baza danych, aby określić, że źródło danych używa zabezpieczeń bazy danych na poziomie wierszy.

    Jeśli są używane zabezpieczenia bazy danych na poziomie wierszy i współdzielone buforowanie, trzeba wybrać tę opcję, aby zapobiec udostępnianiu wpisów z pamięci podręcznej, gdy zmienne wrażliwe na zabezpieczenia nie są zgodne.

  • Obiekt zmiennej sesyjnej. Dla zmiennych związanych z zabezpieczeniami należy w oknie dialogowym "Zmienna sesyjna" wybrać opcję Wrażliwe na zabezpieczenia, aby - gdy jest używana strategia zabezpieczania bazy danych na poziomie wierszy - zidentyfikować je jako wrażliwe na zabezpieczenia. Opcja ta powoduje, że wpisy w pamięci podręcznej są oznaczane przy użyciu zmiennych wrażliwych na zabezpieczenia, i włącza uzgadnianie tych zmiennych dla wszystkich przychodzących zapytań.

Uruchamianie zestawu zapytań w celu wypełnienia pamięci podręcznej

Jedną ze strategii maksymalizacji liczby potencjalnych trafień w pamięci podręcznej jest uruchomienie zestawu zapytań w celu wypełnienia pamięci podręcznej.

Poniżej są przedstawione niektóre zalecenia dotyczące typów zapytań do użycia podczas tworzenia zestawu zapytań, za pomocą których ma zostać wypełniona pamięć podręczna.

  • Typowe wstępnie przygotowane zapytania. Zapytania, które są typowo uruchamiane, a zwłaszcza kosztowne do przetworzenia, są doskonałymi zapytaniami do wypełniania pamięci podręcznej. Dobrymi przykładami typowych zapytań są te, których wyniki są osadzane w pulpitach informacyjnych.

  • Listy SELECT bez wyrażeń. Eliminując wyrażenia z kolumn z listy SELECT, zwiększa się prawdopodobieństwo trafienia w pamięci podręcznej. Znajdująca się w pamięci podręcznej kolumna z wyrażeniem może zostać użyta do udzielenia odpowiedzi na nowe zapytanie z tym samym wyrażeniem; kolumna bez wyrażenia może zostać użyta do udzielenia odpowiedzi na zapytanie z dowolnym wyrażeniem. Na przykład przechowywane w pamięci podręcznej żądanie, takie jak:

    SELECT QUANTITY, REVENUE...
    

    może udzielić odpowiedzi na nowe zapytanie, takie jak:

    SELECT QUANTITY/REVENUE... 
    

    lecz nie odwrotnie.

  • Brak klauzuli WHERE. Jeśli w buforowanym wyniku nie ma klauzuli WHERE, to może on zostać użyty do udzielenia odpowiedzi na zapytania spełniające reguły trafienia w pamięci dla listy SELECT z dowolną klauzulą WHERE zawierającą kolumny z listy rzutowania.

Zasadniczo najlepszymi zapytaniami do wypełnienia pamięci podręcznej są te, które znacząco wykorzystują zasoby przetwarzania bazy danych i które prawdopodobnie będą ponownie uruchamiane. Należy pamiętać, aby nie wypełniać pamięci podręcznej przy użyciu prostych zapytań, zwracających wiele wierszy. Takie zapytania (na przykład SELECT * FROM PRODUCTS, gdzie PRODUCTS jest mapowany bezpośrednio na jedną tabelę bazy danych) wymagają niewielkiego przetwarzania bazy danych. Ich kosztem są obciążenia związane z siecią i dyskiem, a tych pamięć podręczna nie łagodzi.

Oracle Analytics Cloud, gdy odświeża zmienne modelu semantycznego, bada modele biznesowe w celu stwierdzenia, czy odwołują się one do tych zmiennych. Jeśli tak, Oracle Analytics Cloud opróżnia całą pamięć podręczną dla tych modeli biznesowych. Zob. W jaki sposób zmiany dokonywane w modelu semantycznym wpływają na pamięć podręczną zapytań.

Używanie agentów do wypełniania pamięci podręcznej zapytań

Można skonfigurować agenty do wypełniania pamięci podręcznej zapytań Oracle Analytics Cloud.

Wypełnienie pamięci podręcznej może skrócić czasy odpowiedzi dla użytkowników uruchamiających analizy lub wyświetlających analizy osadzone w pulpitach informacyjnych. Można to wykonać, planując agenty do uruchamiania żądań odświeżających te dane.

  1. W Oracle Analytics Cloud otworzyć stronę startową Classic, po czym wybrać opcję Agent (sekcja Utwórz).
  2. Na karcie "Ogólne" wybrać Odbiorcę dla opcji Uruchom jako. W procesie spersonalizowanego wypełniania pamięci podręcznej jest - w celu dostosowania zawartości dostarczanej przez agenty - używana widoczność danych przez poszczególnych odbiorców.
  3. Na karcie "Harmonogram" określić, kiedy pamięć podręczna ma być wypełniana.
  4. Opcjonalne: Wybrać Warunek, po czym utworzyć lub wybrać żądanie warunkowe. Na przykład można mieć model biznesowy ustalający, kiedy zostaje ukończony proces ETL. Raportu opartego na tym modelu biznesowym można użyć jako wyzwalacza warunkowego, uruchamiającego wypełnianie pamięci podręcznej.
  5. Na karcie "Dostarczana zawartość" wybrać indywidualne żądanie lub całą stronę pulpitu informacyjnego, dla których ma zostać wypełniona pamięć podręczna. Wybór strony pulpitu informacyjnego może się przyczynić do oszczędzenia czasu.
  6. Na karcie "Odbiorcy" wybrać poszczególnych użytkowników lub grupy jako odbiorców.
  7. Na karcie "Miejsca docelowe" wyczyścić wszystkie miejsca docelowe użytkowników, po czym wybrać Pamięć podręczna serwera Oracle Analytics.
  8. Zapisać agent, naciskając przycisk Zapisz (w górnym prawym rogu).

Jedyna różnica między agentami wypełniającymi pamięć podręczną a innymi agentami polega na tym, że te pierwsze czyszczą automatycznie pamięć podręczną i nie pojawiają się w alarmach na pulpicie informacyjnym.

Uwaga:

Agenty wypełniające pamięć podręczną usuwają z niej tylko w pełni zgodne zapytania, tak że nadal mogą w pamięci podręcznej istnieć zdezaktualizowane dane. Należy się upewnić, że strategia buforowania obejmuje opróżnianie pamięci podręcznej, ponieważ zapytania agentów nie uwzględniają zapytań doraźnych ani drążeń.

Używanie narzędzia Model Administration Tool do automatycznego opróżniania pamięci podręcznej dla określonych tabel

Opróżniając pamięć podręczną, usuwa się z niej wpisy i zapewnia aktualność jej zawartości. Można włączyć automatyczne opróżnianie pamięci podręcznej dla określonych tabel, ustawiając - w narzędziu Model Administration Tool - odpowiedni Czas utrwalania pamięci podręcznej dla poszczególnych tabel.

Uwaga:

Jeśli jest używane narzędzie Semantic Modeler, zob. What Are a Physical Table's General Properties?

Jest to przydatne w przypadku źródeł danych, które są często aktualizowane. Na przykład, mając tabelę, w której są składowane dane z paska notowań giełdowych, aktualizowane co minutę, to za pomocą ustawienia Czas utrwalania pamięci podręcznej można zlecić automatyczne opróżnianie pamięci podręcznej z wpisów dla tej tabeli co 59 sekund. Zob. Buforowanie i czas utrwalania buforowania dla określonych tabel fizycznych.