Služba Oracle Analytics Cloud udržuje místní paměť cache sad výsledků dotazů v paměti cache dotazů.
Témata:
Paměť cache dotazů umožňuje službě Oracle Analytics Cloud uspokojit mnoho následných požadavků dotazů bez přístupu k backendovým datovým zdrojům, a tím zvyšuje výkonnost dotazů. Položky v paměti cache dotazů se však mohou stát neaktuální, když dochází k aktualizacím v backendových datových zdrojích.
Nejrychlejším způsobem, jak zpracovat dotaz, je přeskočit rozsáhlé zpracování a použít předem vypočítanou odpověď.
Prostřednictvím používání paměti cache dotazů služba Oracle Analytics Cloud ukládá předem vypočítané výsledky dotazů do místní paměti cache. Pokud tyto výsledky může použít jiný dotaz, je veškeré zpracování databáze pro tento dotaz eliminováno. To může vést k velmi výraznému zlepšení průměrné doby odezvy na dotaz.
Schopnost odpovídat na dotazy z místní paměti cache kromě zlepšení výkonu také šetří síťové zdroje a zkracuje dobu zpracování na databázovém serveru. Síťové zdroje jsou zachovány, protože do služby Oracle Analytics Cloud nejsou vraceny průběžné výsledky. Spuštění dotazu bez použití databáze uvolní databázový server pro jinou práci. Pokud databáze používá systém doúčtování, může spuštění méně dotazů také snížit náklady v rozpočtu.
Další výhodou použití paměti cache k zodpovězení dotazu je úspora doby zpracování ve službě Oracle Analytics Cloud, zejména pokud jsou výsledky dotazu načteny z více databází. V závislosti na dotazu může na serveru probíhat rozsáhlé zpracování související se spojením a řazením. Pokud je dotaz již vypočítán, pak k tomuto zpracování nedojde, čímž se uvolní zdroje serveru pro další úkoly.
Používání paměti cache dotazů tedy může velmi výrazně zlepšit výkonnost dotazů a snížit síťový provoz, rozsah zpracování databáze a režii zpracování.
Používání paměti cache dotazů nabízí mnoho zřejmých výhod, ale také přináší určité náklady.
Potenciální možnost ztráty aktuálnosti výsledků uložených v paměti cache
Administrativní náklady na správu paměti cache
Při správě paměti cache výhody zpravidla výrazně převažují nad náklady.
Některé úlohy správy jsou spojeny s používáním paměti cache. Je nutné náležitě nastavit dobu zachování obsahu paměti cache pro jednotlivé fyzické tabulky s ohledem na četnost, s jakou dochází k aktualizaci dat v dané tabulce.
Když se četnost aktualizace obměňuje, musíte sledovat, kdy dojde ke změnám a v případě potřeby ručně vyprázdnit paměť cache.
Pokud nejsou při změně dat v podkladových databázích vyprázdněny položky obsažené v paměti cache, dotazy mohou potenciálně vrátit výsledky, které nejsou aktuální.
Je nutné vyhodnotit, zda je to přijatelné. Může být přijatelné povolit, aby paměť cache obsahovala určitá neaktuální data. Musíte rozhodnout, jaká úroveň neaktuálnosti dat je přijatelná, a poté konfigurovat (a sledovat) sadu pravidel tak, aby těmto úrovním odpovídala.
Předpokládejme například, že aplikace analyzuje podniková data z velkého konsorcia podniků a vy každoročně vytváříte souhrny pro různé divize ve společnosti. Nová data podstatně neovlivní dotazy, protože nová data mají vliv pouze na souhrny dalšího roku. V tomto případě mohou kompromisní přístupy při rozhodování, zda vyprázdnit paměť cache, upřednostňovat ponechání položek v paměti cache.
Předpokládejme však, že databáze jsou aktualizovány třikrát denně a vy provádíte dotazy ohledně aktivit aktuálního dne. V tomto případě musíte paměť cache vyprazdňovat mnohem častěji nebo možná zvážit, zda ji vůbec používat.
Dalším scénářem je, že datovou sadu sestavujete v pravidelných intervalech (například jednou týdně) znovu od začátku. V tomto příkladu můžete vyprázdnit celou paměť cache jako součást procesu opětovného sestavení datové sady, čímž zajistíte, že v paměti cache nikdy nebudou neaktuální data.
Ať už je vaše situace jakákoli, musíte vyhodnotit, co je přijatelné, pokud jde o neaktuálnost informací vracených uživatelům.
Pokud je pro konkrétní fond připojení povoleno sdílené přihlášení, může být paměť cache sdílena mezi uživateli a není nutné naplnit ji pro každého uživatele.
Pokud není povoleno sdílené přihlášení a každý uživatel se musí k databázi přihlásit samostatně, pak každý uživatel generuje svůj vlastní záznam v paměti cache.
Ve službě Oracle Analytics Cloud je paměť cache dotazů při výchozím nastavení aktivována. Používání paměti cache dotazů můžete aktivovat nebo deaktivovat na stránce Nastavení systému.
Chcete-li provádět správu změn v podkladových databázích a sledovat položky v paměti cache, musíte vyvinout strategii správy paměti cache.
Potřebujete proces, který zneplatní položky v paměti cache, když se změní data v podkladových tabulkách, které tvoří položku v paměti cache, a proces ke sledování, identifikaci a odebrání všech nežádoucích položek v paměti cache.
Tato část obsahuje následující témata:
Volba strategie správy paměti cache závisí na nestálosti dat v podkladových databázích a předvídatelnosti změn, které tuto nestálost způsobují.
Záleží také na počtu a typech dotazů, které tvoří vaši paměť cache, a na využití těchto dotazů. Tato část poskytuje přehled různých přístupů ke správě paměti cache.
Pokud chcete zabránit vytváření jakýchkoli nových položek ve stávající paměti cache a používání této paměti cache libovolným novým dotazem, můžete deaktivovat používání paměti cache pro celý systém. Deaktivace používání paměti cache umožňuje později používání opět aktivovat bez ztráty jakékoli položky, která je v paměti cache uložena.
Dočasná deaktivace používání paměti cache je užitečná strategie v případě podezření, že máte v paměti cache neaktuální položky, ale před vyprázdněním těchto položek nebo celé paměti cache chcete ověřit, zda jsou skutečně neaktuální. Pokud zjistíte, že data uložená v paměti cache jsou stále relevantní, nebo poté, co jste bezpečně vyprázdnili problémové položky, můžete paměť cache bezpečně aktivovat. V případě potřeby před opětovnou aktivací paměti cache vyprázdněte celou paměť cache nebo pouze část spojenou s určitým modelem.
Pro každou fyzickou tabulku můžete nastavit atribut schopnosti uložení do paměti cache, který vám umožní určit, zda budou dotazy pro tuto tabulku přidány do paměti cache k zodpovězení budoucích dotazů.
Pokud aktivujete používání paměti cache pro tabulku, pak bude jakýkoli dotaz zahrnující tuto tabulku přidán do paměti cache. Při výchozím nastavení je možné používat paměť cache pro všechny tabulky, ale některé z nich nemusí být vhodnými kandidáty pro zahrnutí do paměti cache, pokud nepoužijete vhodné nastavení Zachování obsahu paměti cache. Předpokládejme například, že máte tabulku, do níž se ukládají data běžícího textu, která se aktualizují každou minutu. Můžete zadat, že chcete vyprázdnit záznamy pro danou tabulku každých 59 sekund.
Nastavení Zachování obsahu paměti cache můžete také použít k určení doby, po kterou budou položky této tabulky uloženy v paměti cache dotazů. To je užitečné pro datové zdroje, které jsou často aktualizovány.
V Nástroji pro správu modelu klikněte dvakrát ve fyzické vrstvě na fyzickou tabulku.
Pokud používáte nástroj Semantic Modeler, viz Jaké jsou obecné vlastnosti fyzikální tabulky?.
V dialogovém okně vlastností Fyzická tabulka na kartě Obecné proveďte jeden z následujících výběrů:
Chcete-li aktivovat používání paměti cache, vyberte volbu Lze uložit do paměti cache.
Chcete-li zabránit ukládání tabulky do paměti cache, výběr položky Lze uložit do paměti cache zrušte.
Chcete-li nastavit dobu vypršení platnosti paměti cache, nastavte položku Doba zachování obsahu paměti cache a zadejte měrnou jednotku (dny, hodiny, minuty nebo sekundy). Pokud nechcete, aby platnost položek v paměti cache automaticky vypršela, vyberte volbu Platnost paměti cache nikdy nevyprší.
Klikněte na tlačítko OK.
Když upravujete sémantické modely pomocí nástroje Semantic Modeler nebo Nástroje pro správu modelu, mohou mít provedené změny dopad na položky, které jsou uloženy v paměti cache. Pokud například změníte definici fyzického objektu nebo proměnné dynamického sémantického modelu, položky v paměti cache, které odkazují na tento objekt nebo proměnnou, již nemusí být platné. Tyto změny mohou vyžadovat vyprázdnění paměti cache. Je nutné mít na paměti dva možné scénáře: když upravujete stávající sémantický model a když vytváříte (nebo odesíláte) nový sémantický model.
Změny v sémantickém modelu
Když upravíte sémantický model nebo odešlete odlišný soubor .rpd, všechny změny, které provedete a které ovlivní položky v paměti cache, automaticky vyvolají vyprázdnění všech položek v paměti cache, které odkazují na změněné objekty. K vyprázdnění dojde při odeslání změn. Pokud například odstraníte fyzickou tabulku ze sémantického modelu, budou všechny položky v paměti cache, které se odkazují na tuto tabulku, při odeslání vyprázdněny. Jakékoli změny provedené v sémantickém modelu v logické vrstvě vyprázdní všechny položky v paměti cache pro tento sémantický model.
Změny proměnných globálního sémantického modelu
Hodnoty proměnných globálního sémantického modelu jsou aktualizovány daty, která jsou vrácena z dotazů. Když definujete proměnnou globálního sémantického modelu, vytvoříte inicializační blok nebo použijete již existující inicializační blok, který obsahuje dotaz SQL. Provedete také konfiguraci plánu pro spuštění dotazu a pravidelné aktualizace hodnoty proměnné.
Pokud se změní hodnota proměnné globálního sémantického modelu, stane se jakákoli položka v paměti cache, která používá tuto proměnnou ve sloupci, neaktuální. Když jsou data obsažená v této položce znovu potřebná, bude generována nová položka v paměti cache. Stará položka v paměti cache není ihned odebrána, ale zůstane zachována až do vymazání obvyklým mechanismem ukládání do paměti cache.
Jednou z hlavních výhod používání paměti cache dotazů je zlepšení zřejmé výkonnosti dotazů.
Při používání paměti cache dotazů může být užitečné naplnit ji v čase mimo pracovní dobu spuštěním dotazů a uložením jejich výsledků do paměti cache. Dobrá strategie naplnění vyžaduje znalost podmínek, při kterých dojde k úspěšnému přístupu do paměti cache.
Chcete-li naplnit paměť cache pro všechny uživatele, můžete naplnění uskutečnit následujícím dotazem:
SELECT User, SRs
Po naplnění paměti cache pomocí příkazu SELECT User, SRs
poskytnou následující dotazy přístup do paměti cache:
SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (a uživatel byl USER1) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (a uživatel byl USER2) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (a uživatel byl USER3)
Tato část obsahuje následující témata:
Když je povoleno používat paměť cache, je u každého dotazu vyhodnoceno, zda je oprávněn k přístupu do paměti cache.
Přístup do paměti cache je umožněn, pokud služba Oracle Analytics Cloud dokáže použít paměť cache k zodpovězení dotazu, přičemž v takovém případě vůbec nepřejde do databáze. Služba Oracle Analytics Cloud může pomocí paměti cache dotazů odpovídat na dotazy na stejné nebo vyšší úrovni agregace.
O možnosti přistupovat do paměti cache rozhoduje mnoho faktorů. Tyto faktory jsou popsány v níže uvedené tabulce.
Faktor nebo pravidlo | Popis |
---|---|
Podmnožina sloupců v seznamu |
Všechny sloupce v seznamu Toto pravidlo popisuje minimální požadavek pro přístup do paměti cache, ale splnění tohoto pravidla přístup do paměti cache nezaručuje. Platí také ostatní pravidla uvedená v této tabulce. |
Sloupce v seznamu |
Služba Oracle Analytics Cloud může k získání odpovědi na nový dotaz vypočítat výrazy zahrnující výsledky obsažené v paměti cache, ale všechny sloupce musí být obsaženy ve výsledku uloženém v paměti cache. Například dotaz: SELECT product, month, averageprice FROM sales WHERE year = 2000 využije při přístupu do paměti cache dotaz: SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000 protože údaj |
Klauzule |
Pokud má dotaz získat oprávnění k přístupu do paměti cache, musí být omezení klauzule Klauzule
Kromě toho musí být sloupce použité v klauzuli SELECT employeename FROM employee, geography WHERE region in ('EAST', 'WEST') Neumožní přístup do paměti cache pro dotaz v předchozím seznamu, protože položka REGION není uvedena v seznamu projekcí. |
Dotazy týkající se pouze dimenze se musí přesně shodovat. |
Pokud se dotaz týká pouze dimenze, což znamená, že neobsahuje žádný fakt ani ukazatel, pak přístup do paměti cache zajistí pouze přesná shoda se sloupci projekce dotazu uloženého v paměti cache. Toto chování zabrání falešně pozitivním shodám, když pro tabulku dimenzí existuje více logických zdrojů. |
Dotazy se speciálními funkcemi se musí přesně shodovat. |
Další dotazy, které obsahují speciální funkce, jako jsou funkce časových řad ( |
Sada logických tabulek se musí shodovat. |
K získání oprávnění pro přístup do paměti cache musí mít všechny příchozí dotazy stejnou sadu logických tabulek jako položka v paměti cache. Toto pravidlo zabrání falešným přístupům do paměti cache. Například dotaz |
Hodnoty proměnných relace se musí shodovat, včetně proměnných relace zabezpečení. |
Pokud logický příkaz SQL nebo fyzický příkaz SQL odkazuje na libovolnou proměnnou relace, musí se hodnoty proměnné relace shodovat. V opačném případě není přístup do paměti cache povolen. Kromě toho se hodnoty proměnných relace, které jsou citlivé z hlediska zabezpečení, musí shodovat s hodnotami proměnných relace zabezpečení, které jsou definovány v sémantickém modelu, přestože samotný logický příkaz SQL na proměnné relace neodkazuje. Viz část Zajištění správných výsledků v paměti cache při používání zabezpečení databáze na úrovni řádek. |
Ekvivalentní podmínky spojení |
K získání oprávnění pro přístup do paměti cache musí být výsledná spojená logická tabulka požadavku nového dotazu shodná s výsledky (nebo jejich podmnožinou) v paměti cache. |
Atribut |
Pokud dotaz uložený v paměti cache odstraňuje duplicitní záznamy pomocí zpracování |
Dotazy musí obsahovat kompatibilní úrovně agregace. |
Dotazy, které vyžadují agregovanou úroveň informací, mohou použít výsledky obsažené v paměti cache na nižší úrovni agregace. Následující dotaz například požaduje množství prodané na úrovni dodavatele, regionu a města: SELECT supplier, region, city, qtysold FROM suppliercity Následující dotaz požaduje množství prodané na úrovni města: SELECT city, qtysold FROM suppliercity Druhý dotaz povede k přístupu do paměti cache přes první dotaz. |
Omezená další agregace |
Pokud je například v paměti cache uložen dotaz se sloupcem |
Klauzule |
Dotazy s řazením podle sloupců, které nejsou obsaženy v seznamu SELECT, způsobí, že v paměti cache nebudou nalezena žádná data. |
Diagnostika chování přístupu do paměti cache |
Chcete-li lépe posoudit chování přístupu do paměti cache, nastavte proměnnou relace ENABLE_CACHE_DIAGNOSTICS na hodnotu 4, jak ukazuje následující příklad: ENABLE_CACHE_DIAGNOSTICS=4 |
Při použití strategie zabezpečení databáze na úrovni řádek, jako je virtuální privátní databáze (VPD), jsou vrácené datové výsledky podmíněny ověřovacími údaji uživatele.
Z tohoto důvodu musí služba Oracle Analytics Cloud vědět, zda datový zdroj používá zabezpečení databáze na úrovni řádek a které proměnné jsou pro zabezpečení důležité.
Chcete-li zajistit, že přístup do paměti cache se bude týkat pouze položek paměti cache, které obsahují všechny proměnné citlivé z hlediska zabezpečení a odpovídají těmto proměnným, musíte správně konfigurovat objekt databáze a objekty proměnných relace v Nástroji pro správu modelu, a to následovně:
Objekt databáze. Ve fyzické vrstvě na kartě Obecné dialogového okna Databáze vyberte položku Virtuální privátní databáze a určete, že datový zdroj používá zabezpečení databáze na úrovni řádek.
Pokud používáte zabezpečení databáze na úrovni řádek se sdíleným používáním paměti cache, pak musíte tuto volbu vybrat, abyste zabránili sdílení položek v paměti cache, jejichž proměnné citlivé z hlediska zabezpečení se neshodují.
Objekt proměnné relace. U proměnných souvisejících se zabezpečením vyberte v dialogovém okně Proměnná relace položku Citlivé z hlediska zabezpečení, aby byly při použití strategie zabezpečení databáze na úrovni řádek identifikovány jako citlivé z hlediska zabezpečení. Tato volba zajišťuje, že položky obsažené v paměti cache jsou označeny proměnnými citlivými z hlediska zabezpečení, což umožňuje zajistit shodu proměnných citlivých z hlediska zabezpečení u všech příchozích dotazů.
Chcete-li maximalizovat potenciální přístupy do paměti cache, je jednou ze strategií spustit sadu dotazů k naplnění paměti cache.
Níže je uvedeno několik doporučení pro typy dotazů, které mají být použity při vytváření sady dotazů, pomocí níž bude naplněna paměť cache.
Běžné předem připravené dotazy. Dotazy, které jsou běžně spouštěny, zejména ty, jejichž zpracování je nákladné, jsou skvělým typem dotazů pro naplnění paměti cache. Vhodným příkladem běžných dotazů jsou dotazy, jejichž výsledky jsou vkládány do panelů.
Seznamy SELECT bez výrazů. Eliminace výrazů ve sloupcích seznamů SELECT
rozšiřuje možnost přístupů do paměti cache. Sloupec v paměti cache s výrazem může odpovědět pouze na nový dotaz se stejným výrazem, zatímco sloupec v paměti cache bez výrazů může odpovědět na požadavek pro tento sloupec s jakýmkoli výrazem. Například požadavek v paměti cache, jako je:
SELECT QUANTITY, REVENUE...
může odpovědět na nový dotaz, jako je:
SELECT QUANTITY/REVENUE...
ale nikoli naopak.
Bez klauzule WHERE. Pokud se ve výsledku v paměti cache nevyskytuje klauzule WHERE
, lze jej použít k zodpovězení dotazů, které splňují pravidla přístupu do paměti cache pro seznam SELECT s libovolnou klauzulí WHERE
, která obsahuje sloupce uvedené v seznamu projekcí.
Obecně platí, že nejlepšími dotazy pro naplnění paměti cache jsou dotazy, které výrazně spotřebovávají zdroje pro zpracování databáze a u kterých je pravděpodobné, že se budou opakovat. Dbejte na to, abyste nenaplnili paměť cache jednoduchými dotazy, které vracejí mnoho řádek. Takové dotazy (například SELECT * FROM PRODUCTS
, ve kterých je výraz PRODUCTS
mapován přímo na jedinou databázovou tabulku) vyžadují velmi malý rozsah zpracování databáze. Jejich výdajem je režie sítě a disku, což jsou faktory, které používání paměti cache nezmírní.
Když služba Oracle Analytics Cloud aktualizuje proměnné sémantického modelu, zkoumá modely a zjišťuje, zda se odkazují na tyto proměnné úložiště. Pokud se odkazují, pak služba Oracle Analytics Cloud vyprázdní celou paměť cache pro tyto modely. Viz část Jak změny sémantického modelu ovlivňují paměť cache dotazů.
Agenty můžete konfigurovat tak, aby naplnily paměť cache dotazů služby Oracle Analytics Cloud.
Naplnění paměti cache může uživatelům zkrátit dobu odezvy při provádění analýz nebo zobrazení analýz, které jsou vložené na jejich panelech. Toho můžete dosáhnout plánováním agentů tak, aby spouštěly požadavky, které aktualizují tato data.
Jediný rozdíl mezi agenty naplnění paměti cache a ostatními agenty spočívá v tom, že automaticky vymažou předchozí paměť cache a nezobrazí se na panelu jako výstrahy.
Poznámka:
Agenty naplnění paměti cache vyprázdní pouze dotazy s přesnou shodou, takže se stále mohou vyskytovat neaktuální data. Zajistěte, aby strategie používání paměti cache vždy zahrnovala vyprázdnění paměti cache, protože dotazy agentů neřeší dotazy ad hoc ani procházení.Vyprázdnění paměti cache odstraní položky z paměti cache dotazů a zachová váš obsah aktuální. Položky v paměti cache pro konkrétní tabulky můžete automaticky vyprázdnit nastavením pole Doba zachování obsahu paměti cache pro jednotlivé tabulky v Nástroji pro správu modelu.
Poznámka:
Pokud používáte nástroj Semantic Modeler, viz Jaké jsou obecné vlastnosti fyzikální tabulky?.
To je užitečné pro datové zdroje, které jsou často aktualizovány. Pokud máte například tabulku, do níž se ukládají data běžícího textu, která se aktualizují každou minutu, můžete pole Doba zachování obsahu paměti cache nastavit tak, aby položky pro tuto tabulku byly vyprázdněny vždy po 59 sekundách. Viz Paměť cache a určení doby zachování obsahu paměti cache pro stanovené fyzické tabulky.