Co se děje při volání SQL
• Syntax check– Jde o sql?
• Semantic analysis– Kontrola oproti
datovému slovníku– Kontrola práv na objekty
• Hash textu– Select * from T
versus– SELECT * from T
Hard parse
• Sql předáno CBO– Zajištění optimálního provedení příkazu–Musí najít nejefektivnější způsob provedení
Cost-base přístup
• Projití všech relevantních variant ocenění• Zvolení „nejlevnější“ varianty (plánu)
• Vložení této varianty do Library Cache– Přiřazení varianty danému sql (hash sql)– Plán zůstává v cache dokud nevyexpiruje
Library cache
• Sdílená cache kurzorů• Age out– LRU (Least Recently Used) algoritmus– Invalidation – změna vlastnosti objektu
• Sbírá informace – Počet spuštění– Počet čtení z disku– A spousty dalších …
Podklady pro cost-base
• Nutnost podkladových dat– Bez nich se neumí CBO rozhodnout
• Čím přesnější podkladová data, tím přesnější určení optimálního plánu
• Příklad– Podkladová data říkají, že je v tabulce 100 řádku– Skutečně jich je 1 000 000– Nepoužití indexu = špatný plán
• Podkladová data = Statistiky
Statistiky
• Pro celou tabulku– Počet řádků, průměrná délka řádku, …
• Pro každý sloupec tabulky– Low/High value– Hustota (Density)– Počet null hodnot
• Pro index– Např. počet leaf bloků
• Systémové statistiky• Hodnota vždy normalizována na číslo bez ohledu na datový
typ
Frekvenční histogramy
• Jeden z typů statistik• Určují rozložení dat ve sloupci tabulky– Počet výskytů pro konkrétní hodnotu
• Mohou být velice prospěšné při stanovení ceny• Mají větší váhu při rozhodování CBO
Frekvenční histogramy - příklad
• Data o zaplacení pojistného po měsících– ... WHERE PAID_MONTH BETWEEN 200910 AND
201001• Ukázka histogramu
Systémové statistiky
• Údaje o HW a OS• Rychlost čtení bloků• Hospodaření s operační pamětí
a výpočetní kapacitou procesoru• …
Sběr statistik
• Sběr základních statistik a histogramů– pro datové objekty
• Velká režie sběru• Defaultně sbírány systémovým jobem
Sběr statistik II
• Základní předpoklad–Mít statistiky aktuální– Nezatěžovat systém přílišným sběrem
• Aktualizace statistik v předem definovaném období – Období klidového provozu – Aktualizovat pouze statistiky, které od posledního
sběru zastaraly
Soft parse
• Oracle provede pouze základní validace• Použije se plán pro daný hash sql– Uložen v Library Cache
• Příkaz se spustí
Cíl O-R mappingu
• Konverze dat mezi aplikační a databázovou vrstvou
• Odstínění od relačních modelů– Čistě objektový
pohled na data
Přínosy pro Oracle
• Zajištění stejných dotazů– Načtení stejné entity stále stejným sql – stejný
hash příkazu• Použití bind variables– … where name = ‘Andrle’ where name = :B1– Hodnota B1 se doplní až po parse sql– Stejný hash = soft parse = méně práce pro CBO
Nevýhody
• Pomalejší – Oproti nativnímu přístup
• Méně pod kontrolou– Lazy load
• Použití alternativy k SQL– HQL, apod.