Oracles analysmoln upprätthåller en lokal cache med frågeresultatuppsättningar i frågecachen.
Avsnitt:
Frågecachen gör att Oracles analysmoln kan uppfylla många efterföljande frågebegäranden utan att behöva gå till datakällor på serversidan, vilket förbättrar frågeprestandan. Posterna i frågecachen kan dock bli inaktuella i och med att uppdateringar görs av datakällorna på serversidan.
Det snabbaste sättet att köra en fråga är att hoppa över större delen av bearbetningen och använda ett förberäknat svar.
Vid frågecachning lagrar Oracles analysmoln de förberäknade resultaten av frågor i en lokal cache. Om en annan fråga kan använda dessa resultat elimineras all databasbearbetning för den frågan. Detta kan drastiskt förbättra den genomsnittliga svarstiden för frågor.
Att kunna få svar på frågor från en lokal cache ger, förutom bättre prestanda, besparingar i nätverksresurser och bearbetningstid på databasservern. Besparingen av nätverksresurser beror på att inga mellanresultat returneras till Oracles analysmoln. Att frågan inte körs mot databasen frigör databasservern för andra uppgifter. Att köra färre frågor kan dessutom, om databasen använder ett återdebiteringssystem, kapa kostnader i budgeten.
En annan fördel med att använda cachen för att få resultat för en fråga är besparingar i bearbetningstid från Oracles analysmoln, särskilt om frågeresultaten hämtas från flera databaser. Beroende på hur frågan är utformad kan kopplingar och sortering kräva en hel del bearbetning i servern. Om det redan finns beräkningar för en fråga kan denna bearbetning undvikas, och serverresurser frigöras för andra uppgifter.
Sammanfattningsvis kan frågecachning ge avsevärda förbättringar av frågeprestanda och reducerad nätverkstrafik, databasbearbetning och bearbetningsbelastning.
Det finns många uppenbara fördelar med frågecachning, men det finns också vissa kostnader.
Risken att cachade resultat är inaktuella
Administrativa kostnader för hantering av cachen
Med hantering av cachen uppväger fördelarna oftast kostnaderna.
Det finns vissa administrationsuppgifter som är associerade med cachning. Du måste ställa in lämplig beständighetstid för cachen för varje fysisk tabell på, med kännedom om hur ofta data i respektive tabell uppdateras.
Om uppdateringar sker med oregelbundna intervall måste du hålla reda på när ändringar sker och vid behov rensa cachen manuellt.
Om cache-posterna inte rensas när data i de underliggande databaserna ändras kan det leda till att frågor returnerar svar som är inaktuella.
Du måste avgöra om detta är godtagbart. Det kan vara så att det är godtagbart att låta cachen innehålla en viss mängd inaktuella data. Du måste bestämma vilka nivåer med inaktuella data som kan godtas, och sedan konfigurera (och följa) en uppsättning regler baserade på dessa nivåer.
Säg till exempel att en applikationen analyserar företagsdata från ett stort konglomerat, och du ska skapa årssammanställningar för de olika divisionerna inom företaget. Frågorna berörs inte i någon i väsentlig grad av nya data eftersom nya data endast berör nästa års sammanställningar. I detta fall kan det vara så att de avvägningar som görs för att bestämma om cachen ska rensas kan ge vid handen att posterna kan lämnas kvar i cachen.
Anta å andra sidan att databaserna uppdateras tre gånger om dagen och du ska köra frågor som gäller aktiviteter under den aktuella dagen. I detta fall måste du rensa cachen mycket oftare, eller kanske överväga att inte använda cachen alls.
Ett annat scenario är att du återskapar en datamängd från början med regelbundna intervall (till exempel en gång i veckan). I detta exempel kan du rensa hela cachen som ett led i processen att återskapa datamängden och på så sätt se till att det aldrig finns inaktuella data i cachen.
Oavsett hur din situation ser ut måste du utvärdera i vilken mån det är godtagbart att inaktuell information returneras till användare.
Om delad inloggning är aktiverat för en viss anslutningspool kan cachen delas mellan användare och behöver inte fyllas på för varje användare.
Om delad inloggning inte är aktiverat och användarspecifik databasinloggning används genererar varje användare sin egen cache-post.
I Oracles analysmoln är frågecachen aktiverad som standard. Frågecachning kan aktiveras eller avaktiveras på sidan Systeminställningar.
För att hantera ändringarna i de underliggande databaserna och övervaka cache-posterna måste du utveckla en strategi för cachehantering.
Du behöver en process som ogiltigförklarar cache-poster när data i de underliggande tabeller som utgör cache-posten ändras, och en process som övervakar, identifierar och tar bort oönskade cache-poster.
Det här avsnittet innehåller följande delavsnitt:
Valet av strategi för cachehantering beror på flyktigheten hos data i de underliggande databaserna och förutsägbarheten för de ändringar som orsakar denna flyktighet.
Det beror också på antalet och typen av frågor som utgör cachen, och användningen av dessa frågor. I det här avsnittet ges en översikt över de olika metoderna för cachehantering.
Cachning kan avaktiveras för hela systemet, vilket stoppar tillägg av nya cache-poster och förhindrar att nya frågor använder den befintliga cachen. Om du avaktiverar cachning kan du aktivera den senare utan att några befintliga poster i cachen går förlorade.
Att tillfälligt avaktivera cachning är en användbar strategi i situationer där du misstänker att det finns inaktuella poster i cachen men vill verifiera att de är inaktuella innan du rensar dessa poster eller rensar hela cachen. Om du kan konstatera att data i cachen fortfarande är relevanta, eller om du har rensat problemposterna, är det säkert att aktivera cachen. Rensa vid behov hela cachen, eller den cache som är associerad med en specifik affärsmodell, innan du aktiverar cachen igen.
Du kan ställa in ett cachningsbart attribut för varje fysisk tabell, och ange om frågor mot denna tabell ska läggas till i cachen för att besvara kommande frågor.
Om du aktiverar cachning för en tabell läggs alla frågor som innefattar den tabellen till i cachen. Som standard är alla tabeller cachningsbara, men vissa tabeller kanske inte lämpar sig för att inkluderas i cachen om du inte ställer in lämpliga inställningar för beständighet för cache. Anta till exempel att du har en tabell med aktiekursdata som uppdateras en gång i minuten. Du kan ange att du vill rensa posterna för tabellen var 59 sekund.
Du kan även använda inställningarna för beständighet för cache till att ange hur länge posterna för tabellen ska lagras i frågecachen. Detta är användbart för datakällor som uppdateras ofta.
I modelladministrationsverktyget dubbelklickar du på den fysiska tabellen i det fysiska skiktet.
Om du använder semantikmodelleraren, se Vilka är de allmänna egenskaperna för en fysisk tabell?.
I dialogrutan för egenskaper för Fysisk tabell, på fliken Allmänt, gör du ett av följande val:
Om du vill aktivera cachning markerar du Cachebar.
Om du vill förhindra att en tabell cashas avmarkerar du Cachebar.
Om du vill ställa in en beständighetstid för cachen anger du Beständighetstid för cache och anger en måttenhet (dagar, timmar, minuter eller sekunder). Om du inte vill att poster i cachen ska utgå automatiskt markerar du Cache upphör aldrig att gälla.
Klicka på OK.
Om du ändrar semantiska modeller med hjälp av semantikmodelleraren eller modelladministrationsverktyget kan ändringarna få konsekvenser för poster som finns lagrade i cachen. Om du till exempel ändrar definitionen av ett fysiskt objekt eller en dynamisk variabel för semantisk modell kan det hända att cacheposter som refererar till detta objekt eller denna variabel inte längre är giltiga. Dessa ändringar kan göra att cachen måste rensas. Det finns två scenarier att beakta: när du ändrar den befintliga semantiska modellen och när du skapar (eller laddar upp) en ny semantisk modell.
Ändringar i den semantiska modellen
Om du ändrar en semantisk modell eller laddar upp en annan .rpd-fil leder alla ändringar du gör som berör cache-poster automatiskt till att alla cache-poster som refererar till de ändrade objekten rensas. Rensningen görs när du laddar upp ändringarna. Om du till exempel tar bort en fysisk tabell från en semantisk modell så rensas alla cache-poster som refererar till den tabellen vid incheckningen. Alla eventuella ändringar som görs i den semantiska modellen i det logiska skiktet rensar bort alla cache-poster från den semantiska modellen.
Ändringar av globala variabler för semantiska modeller
Värdena för globala variabler för semantiska modeller förnyas av data som returneras från frågor. När du definierar en global variabel för semantisk modell skapar du ett initieringsblock eller använder ett befintligt initieringsblock som innehåller en SQL-fråga. Du kan också konfigurera ett schema för att köra frågan och periodiskt förnya variabelns värde.
Om värdet för en global variabel för semantisk modell ändras blir alla cacheposter som använder denna variabel i en kolumn inaktuella, och en ny cachepost genereras nästa gång data i denna post behövs. Den gamla cache-posten tas inte bort omedelbart utan ligger kvar tills den rensas via den vanliga cachningsmetoden.
En av de största fördelarna med frågecachning är att det ger förbättrade upplevda frågeprestanda.
Frågecachning kan vara ett bra sätt att fylla på cachen utanför arbetstid, genom att köra frågor och cacha resultaten. En bra strategi för fördefiniering kräver att du vet när cache-träffar sker.
Om du vill fördefiniera cachen för alla användare kan du fördefiniera cachen med följande fråga:
SELECT User, SRs
Efter fördefiniering av cachen med SELECT User, SRs
är följande frågor cache-träffar:
SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (och "user" var USER1) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (och "user" var USER2) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (och "user" var USER3)
Det här avsnittet innehåller följande delavsnitt:
Om cachning är aktiverat utvärderas varje fråga för att fastställa om den kvalificerar för en cache-träff.
En cache-träff innebär att Oracles analysmoln kunde använda cachen för att svara på frågan och inte behövde gå till databasen. Oracles analysmoln kan använda frågecachen för att besvara frågor på samma eller högre aggregeringsnivå.
Det är många faktorer som avgör om en fråga får träff i cachen. I tabellen nedan beskrivs dessa faktorer.
Faktor eller regel | Beskrivning |
---|---|
En delmängd av kolumner i listan |
För att kvalificera för cache-träff måste alla kolumnerna i listan Den här regeln beskriver minimikravet för att få träff i cachen, men att uppfylla dessa krav är ingen garanti för cache-träff. De andra reglerna i denna tabell gäller även de. |
Kolumnerna i listan |
Oracles analysmoln kan beräkna uttryck på cachade resultat för att besvara den nya frågan, men alla kolumnerna måste finnas i det cachade resultatet. Den här frågan, till exempel: SELECT product, month, averageprice FROM sales WHERE year = 2000 får träff i cachen på frågan: SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000 eftersom |
|
För att frågan ska kvalificeras som en cache-träff måste En
Om fler kolumner används i SELECT employeename FROM employee, geography WHERE region in ('EAST', 'WEST') Leder inte till cache-träff för värdeifyllnadsfrågan i den föregående listan eftersom REGION inte finns med i framskrivningslistan. |
Frågor med endast dimensioner måste vara exakta matchningar |
Om en fråga med endast dimensioner, vilket innebär att inga fakta eller mått finns med i fråga, krävs exakt matchning av den cachade frågans framskrivningskolumner för träff mot cachen. Denna egenskap förhindrar falska positiva resultat om det finns flera logiska källor för en dimensionstabell. |
Frågor med specialfunktioner måste vara exakta matchningar |
Andra frågor som innehåller specialfunktioner, exempelvis tidsseriefunktioner( |
Uppsättningen med logiska tabeller måste matcha |
För att kvalificeras som en cache-träff måste alla inkommande frågor ha samma uppsättning logiska tabeller som posten i cachen. Denna regel förhindrar falska cache-träffar. Till exempel är |
Värden för sessionsvariabler måst matcha, inklusive säkerhetssessionsvariabler |
Om den logiska eller fysiska SQL-satsen innehåller en referens till någon sessionsvariabel måste sessionsvariabelns värden matcha. Annars fås ingen träff i cachen. Dessutom måste värdet för sessionsvariabler som är säkerhetskänsliga matcha de säkerhetsvärden för sessionsvariabler som definierats i den semantiska modellen, även om den logiska SQL-satsen i sig inte refererar till sessionsvariabler. Se Säkerställa korrekta cacheresultat när databassäkerhet på radnivå används. |
Ekvivalenta kopplingsvillkor |
Den resulterande kopplade logiska tabellen för en ny frågebegäran måste vara densamma som (eller en delmängd av) de cachade resultaten för att kvalificeras som en cache-träff. |
|
Om en cachad fråga eliminerar dubbletter av poster genom användning av |
Frågor måste innehålla kompatibla aggregeringsnivåer |
Frågor som frågar efter en aggregerad informationsnivå kan använda cachade resultat på en lägre aggregeringsnivå. Följande fråga, till exempel, frågar efter försäljningsvolym på nivåerna leverantör, region och ort: SELECT supplier, region, city, qtysold FROM suppliercity Följande fråga frågar efter försäljningsvolym på nivån ort: SELECT city, qtysold FROM suppliercity Den andra frågan resulterar i en cache-träff mot den första frågan. |
Begränsad ytterligare aggregering |
Om till exempel en fråga där kolumnen |
Kolumnerna i |
Frågor som sorterar per kolumner som inte finns i select-listan leder till cache-missar. |
Diagnostisera beteendet för cache-träffar |
För att kunna bedöma beteendet för cache-träffar bättre sätter du sessionsvariabeln ENABLE_CACHE_DIAGNOSTICS till 4, enligt följande exempel: ENABLE_CACHE_DIAGNOSTICS=4 |
Om du använder en strategi med databassäkerhet på radnivå, exempelvis en virtuell privat databas (VPD), beror de dataresultat som returneras på användarens behörighet.
På grund av detta måste Oracles analysmoln veta om en datakälla använder databassäkerhet på radnivå och vilka variabler som är relevanta för säkerhet.
För att säkerställa att cache-träffar endast sker på cache-poster som inkluderar och matchar alla säkerhetskänsliga variabler måste databasobjekt och sessionsvariabelobjekt konfigureras korrekt i Modelladministrationsverktyget enligt följande:
Databasobjekt. I det fysiska skiktet, på fliken Allmänt dialogrutan Databas, väljer du Virtuell privat databas för att ange att datakällan använder databassäkerhet på radnivå.
Om du använder databassäkerhet på radnivå med delad cachning måste du markera detta alternativ för att förhindra delning av cache-poster vars säkerhetskänsliga variabler inte matchar.
Sessionsvariabelobjekt. För säkerhetsrelaterade variabler markerar du Säkerhetskänslig i dialogrutan Sessionsvariabel för att ange att de är känsliga ur säkerhetssynpunkt om en strateg med databassäkerhet på radnivå används. Detta alternativ säkerställer att cache-poster markeras med de säkerhetskänsliga variablerna, och möjliggör matchning av säkerhetskänsliga variabler för alla inkommande frågor.
En strategi för att maximera potentiella cache-träffar är att köra en serie frågor för att fylla på cachen.
Här följer några rekommendationer för vilka typer av frågor att använda om du ska skapa en serie frågor för att fördefiniera cachen.
Förbyggda standardfrågor. Frågor som körs vanligen, särskilt de so har höga bearbetningskostnader, är utmärkta frågor för at fördefiniera en cache. Frågor vilkas resultat är inbäddade i infopaneler är bra exempel på standardfrågor.
SELECT-listor utan uttryck. Att utesluta uttryck på SELECT
-listkolumner ökar möjligheten till cache-träffar. En cachad kolumn med ett uttryck kan endast ge svar för frågor med samma uttryck; en cachad kolumn utan uttryck kan ge svar för frågor oavsett vad de har för uttryck. Till exempel en cachad begäran som:
SELECT QUANTITY, REVENUE...
kan ge svar för en ny fråga, till exempel:
SELECT QUANTITY/REVENUE...
men inte omvänt.
Ingen WHERE-sats. Om det inte finns någon WHERE
-sats i ett cachat resultat kan det användas för att ge svar för frågor som motsvarar reglerna för cache-träffar för select-listan med alla WHERE
-satser som inkluderar kolumner i framskrivningslistan.
De bästa frågorna för att fördefiniera en cache är i allmänhet frågor som drar mycket databasbearbetningsresurser och som sannolikt kommer att köras på nytt. Var noga med att inte fördefiniera cachen med enkla frågor som returnerar många rader. För dessa frågor (till exempel SELECT * FROM PRODUCTS
där PRODUCTS
är mappat direkt till en enda databastabell) krävs mycket lite databasbearbetning. Deras kostnader utgörs av belastning på nätverk och diskar, och för dessa faktorer har cachning ingen inverkan.
När Oracles analysmoln förnyar variabler för semantiska modeller undersöker det affärsmodeller för att fastställa om de refererar till dessa variabler för semantiska modeller. Om så r fallet rensar Oracles analysmoln allt cache-innehåll för dessa affärsmodeller. Se Hur frågecachen påverkas av ändringar i semantiska modeller.
Du kan konfigurera agenter för att fördefiniera frågecachen för Oracles analysmoln.
Att fördefiniera cachen kan förbättra svarstiderna för användare när de kör analyser eller visar analyser som finns inbäddade i deras infopaneler. Du kan uppnå detta genom att schemalägga agenter att köra begäranden som förnyar dessa data.
Den enda skillnaden mellan cache-fördefinieringsagenter och andra agenter är att de rensar den tidigare cachen automatiskt och inte visas på infopanelerna som aviseringar.
Obs!:
Cache-fördefinieringsagenter rensar endast frågor med exakta matchningar, så inaktuella data kan finnas kvar. Se till att cachningsstrategin alltid innefattar rensning av cachen, då agentfrågor inte tar hand om ad hoc-frågor eller borrningar.Att rensa cachen raderar poster från frågecachen och gör att innehållet hålls aktuellt. Du kan rensa cache-poster för specifika tabeller automatiskt genom att ställa in fältet Beständighetstid för cache för varje tabell i Modelladministrationsverktyg.
Obs!:
Om du använder semantikmodelleraren, se Vilka är de allmänna egenskaperna för en fysisk tabell?
Detta är användbart för datakällor som uppdateras ofta. Om du till exempel har en tabell med aktiekursdata som uppdatera en gång i minuten kan du använda inställningen Beständighetstid för cache för att rensa posterna i denna tabell var 59:e sekund. Se Cache och cachebeständighetstid för angivna fysiska tabeller.
Du kan använda en automatiserad metod för att rensa (eller tömma) cachen för din miljö i Oracles analysmoln efter behov.
Det här avsnittet innehåller följande delavsnitt:
Oracle Analytics tillhandahåller ett verktyg som du kan köra för att rensa cache som kallas purgeoaccache.sh
. Med det här verktyget kan du rensa cache på olika sätt. Du kan rensa hela cachen eller rensa cache kopplad till en viss fråga, tabell eller databas.
Rensa hela cachen (SAPurgeAllCache
)
I sapurgecache.txt
anropar du funktionen SAPurgeAllCache
för att rensa alla cacheposter. Detta är standardinställningen.
Call SAPurgeAllCache();
Rensa cache för en fråga (SAPurgeCacheByQueryPurge
)
I sapurgecache.txt
anropar du funktionen SAPurgeCacheByQueryPurge
för att rensa cacheposter som matchar en viss fråga exakt.
SELECT lastname, firstname FROM employee WHERE salary > 100000;
Call SAPurgeCacheByQuery('SELECT lastname, firstname FROM employee WHERE salary > 100000' );
Rensa cache för en tabell (SAPurgeCacheByTable
)
I sapurgecache.txt
anropar du funktionen SAPurgeCacheByTable
för att rensa cacheposter som är associerade med en viss fysisk databastabell. Funktionen tar upp till fyra parametrar som var och en representerar komponenterna i ett fullt kvalificerat namn på en fysisk tabell (namn på databas, katalog, schema, tabell).
Obs!:
Du kan inte använda jokertecken i funktionsparametrarna. Både databasnamnet och tabellnamnet är dessutom obligatoriska parametrar, vilket innebär att de inte kan vara null.Call SAPurgeCacheByTable( 'DBName', 'CatName', 'SchName', 'TabName' );
Rensa cache för en databas (SAPurgeCacheByDatabase
)
I sapurgecache.txt
anropar du funktionen SAPurgeCacheByDatabase
för att rensa cacheposter som är associerade med en viss fysisk databas. Funktionen tar en parameter som representerar namnet på den fysiska databasen och parametern kan inte vara null.
Call SAPurgeCacheByDatabase( 'DBName' );
Här följer uppgifterna för att rensa cachen för din miljö i Oracles analysmoln.
Uppgift | Beskrivning | Mer information |
---|---|---|
Bestäm hur du vill skydda JDBC-anslutningen |
Beroende på dina säkerhetskrav väljer du Resource Owner (resursägare) (rekommenderas) eller JSON Web Token (JWT) som verifieringstyp. |
Mer information finns i Välja en verifieringstyp för JDBC-anslutningen i guiden Ansluta Oracles analysmoln till data. |
Registrera BIJDBC-applikationen |
Registrera BIJDBC-applikationen för att autentisera JDBC-anslutningen. |
För verifieringstypen Resource Owner (resursägare) finns mer information i Registrera BIJDBC-applikationen med verifieringstypen Resource Owner (resursägare) i guiden Ansluta Oracles analysmoln till data. För verifieringstypen JWT (JSON Web Token) finns mer information i guiden Ansluta Oracles analysmoln till data:
|
Ladda ned och ställ in verktyget för att rensa cache |
Ladda ned |
|
Ange OAuth-anslutningsinformation |
Använd OCI-konsolen för att hämta de OAuth-anslutningsuppgifter som krävs för att ansluta till Oracles analysmoln och ange informationen i |
|
Kör verktyget för att rensa cache | Identifiera den cache du vill rensa och kör verktyget för att rensa cache för att rensa den angivna cachen. | Kör verktyget för att rensa cache (purgeoaccache) |
Skapa ett skript för att rensa cachen regelbundet (valfri) | Använd ett Cron-jobb (eller liknande) för att rensa cachen efter ett regelbundet schema som passar din organisation. | Skapa ett skript för att regelbundet rensa cachen efter ett schema |
Innan du kan använda verktyget för att rensa cache måste du ladda ned BI-JDBC.zip
och utföra inställningsuppgifter. Du behöver till exempel hämta bijdbc-all.jar
och ställa in variabeln JAVA_HOME
.
Använd konsolen för Oracles molninfrastruktur (OCI) för att hämta den anslutningsinformation som krävs för filen bijdbc.properties
.
När du har slutfört inställningen och konfigurationen av filen bijdbc.properties
kan du köra skriptet. Skriptet rensar hela cachen som standard. Om du vill rensa cacheposter för en viss fråga, tabell eller databas anger du den begärda funktionen och parametrarna i sapurgecache.txt
.
BI-JDBC/props
öppnar du filen sapurgecache.txt
och uppdaterar anropssatsen för att ange vilka cacheposter du vill att skriptet ska rensa. Se Om verktyget för att rensa cache (purgeoaccache).BI-JDBC\purgeoaccache
). I Linux kör du purgeoaccache.sh
. I Windows kör du purgeoaccache.bat
.Du kan skapa ett anpassat skript, till exempel ett Cron-jobb (eller liknande), som rensar cache efter ett schema som passar din organisation.
$crontab -e 0 23 * * * /bin/bash ~/BI-JDBC/purgeoaccache.sh >> ~/BI-JDBC/temp/purgeoaccache.log 2>&1