Prilagođavanje izvedbe upita za relacijske baze podataka

Mnogi kupci doživljavaju probleme s izvedbom kod aplikacija sa spremištima podataka. U nekim slučajevima, SQL upiti koje generira Oracle Analytics složeni su za analizu. Ta tema pruža određene smjernice po pitanju načina analize i smanjenja poteškoća u izvedbi do kojih bi moglo doći iz SQL upita koje generira Oracle Analytics.

Ova tema ne obuhvaća probleme u izvedbi uslijed problema s mrežom, preglednikom ili prezentacijom izvješća.

Analizirajte zapisnik upita za Oracle Analytics (potrebna razina zapisnika 3)

Informacije o tome kako pronaći ovaj zapisnik ili kako razumjeti sadržaj potražite u odjeljku Prikupljanje i analiza zapisnika upita.

  1. Usporedite količinu vremena koju vaš upit provodi u servisu Oracle Analytics s vremenom provedenim u bazi podataka (vrijeme odziva u odnosu na fizičko trajanje upita). Vrijeme provedeno u servisu Oracle Analytics obično nije dulje od nekoliko sekundi.
  2. Ako je vrijeme odziva dulje od nekoliko sekundi, analizirajte pojedinačne korake poduzete u servisu Oracle Analytics radi pronalaženja uzroka (potrebna razina zapisnika 5).

Analizirajte fizički SQL upit

  1. Provjerite jesu li sve tablice iz upita neophodne. Potražite tablice koje su spojene, ali nisu uključene u klauzulu SELECT i nemaju primijenjene filtre (stvarni filtri, ne uvjeti pridruživanja).
  2. Identificirajte broj generiranih fizičkih upita i podupita. Preciznije govoreći, koliko puta upit očitava tablicu činjenica? U savršenom slučaju, upit očitava jednu tablicu činjenica i to samo jednom. Ako ima više tablica činjenica, saznajte zašto i provjerite možete li neke od njih ukloniti.
  3. Provjerite postoje li isključeni stupci, pravila sabiranja koja se ne pridodaju (REPORT_AGGREGATE, count(distinct)...), koraci odabira, podupit u izvješću, postavljeni operatori (UNION), zbrojevi, podzbrojevi, višestruki prikazi i slično.
  4. Provjerite postoje li vanjski spojevi. Otkrijte otkud potječu i možete li neke od njih ukloniti promjenom dizajna.

Analizirajte plan izvođenja

Ako optimizacija SQL upita nije dovoljna, analizirajte plan izvođenja kako biste otkrili korijenski uzrok problema u izvedbi. Zamolite administratora baze podataka (DBA) da vam pomogne. Postoje četiri glavna načina na koja možete poboljšati izvedbu:
  1. Smanjite količinu ulaznih/izlaznih poziva poboljšanjem putova za pristup podacima (indeksa).
  2. Smanjite količinu ulaznih/izlaznih poziva smanjivanjem količine očitanih podataka. Npr., možete pregledati primijenjene filtre ili strukturu podatkovnog modela (provjerite sljedeći odjeljak).
  3. Uključite paralelizam (broj niti za očitavanje velikih tablica).
  4. Povećajte brzinu ulaznih/izlaznih poziva (infrastrukturna poboljšanja, baza podataka u memoriji itd.).

Pregledajte i unaprijedite podatkovni model radi smanjivanja količine očitanih podataka

  1. Stvorite tablice sabiranja.
  2. Upotrijebite fragmentaciju.

    Npr., ako korisnici većinom biraju podatke iz trenutačne godine, tromjesečja ili mjeseca, činjenicu možete podijeliti u dvije tablice: trenutačnu i arhivsku. U Oracle bazi podataka, možete upotrijebiti particioniranje.

  3. Upotrijebite denormalizaciju kako biste smanjili broj spojeva.
  4. Podijelite tablice kako biste smanjili broj stupaca.

    Količina očitanih podataka ne ovisi samo o broju redaka u svakoj od tablica. Količina u tablici ovisi i o broju i veličini njezinih stupaca. Npr., veliku tablicu s 500 stupaca možete podijeliti u dvije tablice; jednu s 50 najčešće korištenih stupaca i drugu s preostalih 450 stupaca koji se rijetko upotrebljavaju.

Mnogi problemi u izvedbi servisa Oracle Analytics proistječu iz lošeg dizajna, jer on uzrokuje generiranje neoptimalnih SQL upita. Izmjenom dizajna možete unaprijediti SQL upite koje Oracle Analytics generira. To može imati ogroman utjecaj, ne samo na izvedbu izvješća, već i na količinu resursa koji se upotrebljavaju u bazi podataka.