Informácie o úspešnom hľadaní v cache

Keď je aktivované ukladanie do cache, každý dopyt sa vyhodnotí s cieľom stanoviť, či sa kvalifikuje ako úspešné hľadanie v cache.

Úspešné hľadanie v cache znamená, že služba Oracle Analytics Cloud dokázala použiť cache na zodpovedanie dopytov a vôbec nepoužila databázu. Oracle Analytics Cloud môže použiť cache dopytov na zodpovedanie dopytov na rovnakej alebo vyššej úrovni agregácie.

Úspešnosť hľadania v cache určuje mnoho faktorov. Nižšie uvedená tabuľka popisuje tieto faktory.

Faktor alebo pravidlo Popis

Podmnožina stĺpcov v zozname SELECT sa musí zhodovať

Všetky stĺpce v zozname SELECT nového dopytu musia existovať v dopyte uloženom v cache, aby sa kvalifikovali ako úspešné hľadanie v cache, prípadne musí byť možné ich vypočítať zo stĺpcov v dopyte.

Toto pravidlo popisuje minimálnu požiadavku na úspešné hľadanie v cache, ale dodržanie tohto pravidla nezaručuje úspešné hľadanie v cache. Platia aj ostatné pravidlá uvedené v tejto tabuľke.

Stĺpce v zozname SELECT možno zložiť z výrazov pre stĺpce dopytov uložených v cache

Služba Oracle Analytics Cloud dokáže vypočítať výrazy pre výsledky uložené v cache s cieľom odpovedať na nový dopyt, ale všetky stĺpce musia byť vo výsledku uloženom v cache. Napríklad dopyt:

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

je úspešne vyhľadaný v cache pri dopyte:

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

pretože averageprice možno vypočítať z hodnôt dollars a unitsales (averageprice = dollars/unitsales).

Klauzula WHERE musí byť sémanticky rovnaká ako logická podmnožina

Aby sa dopyt kvalifikoval ako úspešné hľadanie v cache, obmedzenia klauzuly WHERE musia byť ekvivalentné výsledkom uloženým v cache alebo podmnožine týchto výsledkov.

Klauzula WHERE, ktorá je logickou podmnožinou dopytu uloženého v cache, sa kvalifikuje ako úspešné hľadanie v cache, ak podmnožina spĺňa jedno z nasledujúcich kritérií:

  • Podmnožina hodnôt zoznamu IN. Dopyty požadujúce menej prvkov dopytu uloženého v cache zo zoznamu IN sa kvalifikujú ako úspešné hľadanie v cache. Napríklad nasledujúci dopyt:

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

    sa kvalifikuje ako úspešné hľadanie pre nasledujúci dopyt uložený v cache:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('NORTH', 'SOUTH', 'EAST', 'WEST')
  • Obsahuje menej (ale identických) obmedzení OR ako výsledok uložený v cache.

  • Obsahuje logickú podmnožinu literálneho porovnania. Napríklad nasledujúci predikát:

    WHERE revenue < 1000

    sa kvalifikuje ako úspešné hľadanie v cache pre porovnateľný dopyt s predikátom:

    WHERE revenue < 5000
  • Neexistuje žiadna klauzula WHERE. Ak je v cache uložený dopyt bez klauzuly WHERE, potom dopyty, ktoré vyhovujú všetkým ostatným pravidlám úspešného hľadania v cache, sa kvalifikujú ako úspešné hľadania v cache bez ohľadu na klauzulu WHERE.

Navyše stĺpce, ktoré sa používajú v klauzule WHERE, musia byť v zozname projekcií. Napríklad nasledujúci dopyt:

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

Nemá za následok úspešné hľadanie v cache pre zdrojový dopyt v predchádzajúcom zozname, pretože REGION nie je v zozname projekcií.

Dopyty len s dimenziou musia byť presnou zhodou

Ak je dopyt iba s dimenziou, čo znamená, že nezahŕňa žiadny fakt ani mieru, potom iba presná zhoda stĺpcov projekcie dopytu uloženého v cache bude úspešne vyhľadaná v cache. Toto správanie zabraňuje falošne pozitívnym výsledkom, keď existuje viacero logických zdrojov pre tabuľku dimenzií.

Dopyty so špeciálnymi funkciami sa musia presne zhodovať

Ďalšie dopyty, ktoré obsahujú špeciálne funkcie, napríklad funkcie časovej série (AGO, TODATE a PERIODROLLING), funkcie limitu a posunu (OFFSET a FETCH), funkcie vzťahu (ISANCESTOR, ISLEAF, ISROOT a ISSIBLING), funkcie externej agregácie a vo všeobecnosti metriky filtra musia takisto byť presnou zhodou so stĺpcami projekcií v dopyte uloženom v cache. V týchto prípadoch sa aj filter musí presne zhodovať. V prípade metrík filtra, ak sa dá metrika filtra prepísať ako klauzula WHERE, možno využiť cache podmnožiny.

Množina logických tabuliek sa musí zhodovať

Aby sa kvalifikovali ako úspešné hľadanie v cache, všetky prichádzajúce dopyty musia mať rovnakú množinu logických tabuliek ako položka v cache. Toto pravidlo zabraňuje falošným úspešným hľadaniam v cache. Napríklad výraz SELECT * FROM product sa nezhoduje s výrazom SELECT * FROM product, sales.

Hodnoty premenných relácie sa musia zhodovať, a to vrátane premenných relácie týkajúcich sa zabezpečenia

Ako logický alebo fyzický príkaz SQL odkazuje na akúkoľvek premennú relácie, hodnoty premenných relácie sa musia zhodovať. Inak nebude hľadanie v cache úspešné.

Okrem toho hodnota premenných relácie, ktoré sú citlivé na zabezpečenie, sa musí zhodovať s hodnotami premenných relácie týkajúcimi sa zabezpečenia, ktoré sú definované v sémantickom modeli, hoci samotný logický príkaz SQL neodkazuje na premenné relácie. Pozrite si časť Zaistenie správnych výsledkov cache pri použití zabezpečenia databázy na úrovni riadka.

Ekvivalentné podmienky spojenia

Výsledná spojená logická tabuľka novej požiadavky na dopyt musí by rovnaká ako výsledky uložené v cache (alebo ich podmnožina), aby sa kvalifikovala ako úspešné hľadanie v cache.

Atribút DISTINCT musí byť rovnaký

Ak dopyt uložený v cache eliminuje duplicitné záznamy so spracovaním DISTINCT (napríklad SELECT DISTINCT...), potom požiadavky na stĺpce uložené v cache musia takisto zahŕňať spracovanie DISTINCT. Požiadavka na rovnaký stĺpec bez spracovania DISTINCT je neúspešným hľadaním v cache.

Dopyty musia obsahovať kompatibilné úrovne agregácie

Dopyty, ktoré požadujú agregovanú úroveň informácií, môžu použiť výsledky uložené v cache na nižšej úrovni agregácie. Nasledujúci dopyt napríklad požaduje predané množstvo na úrovni dodávateľa, oblasti a mesta:

SELECT supplier, region, city, qtysold
FROM suppliercity

Nasledujúci dopyt požaduje predané množstvo na úrovni mesta:

SELECT city, qtysold
FROM suppliercity

Druhý dopyt má za následok úspešné hľadanie v cache pre prvý dopyt.

Obmedzená ďalšia agregácia

Ak je napríklad v cache uložený dopyt so stĺpcom qtysold, požiadavka pre RANK(qtysold) bude mať za následok neúspešné hľadanie v cache. Ďalej platí, že dopyt požadujúci qtysold na úrovni krajiny môže viesť k úspešnému hľadaniu v cache z dopytu, ktorý požaduje qtysold na úrovni krajiny a oblasti.

Klauzula ORDER BY musí byť zložená zo stĺpcov vo výberovom zozname

Dopyty zoradené podľa stĺpcov, ktoré sa nenachádzajú vo výberovom zozname, majú za následok neúspešné hľadania v cache.

Diagnostika správania úspešného hľadania v cache

Aby bolo možné lepšie posúdiť správanie úspešného hľadania v cache, nastavte premennú relácie ENABLE_CACHE_DIAGNOSTICS na hodnotu 4 ako v nasledujúcom príklade:

ENABLE_CACHE_DIAGNOSTICS=4