Zpracování SQL Lubomír Andrle 5. přednáška
Obsah Zpracování příkazů SQL – Úvod do CBO O-R mapping
ZPRACOVÁNÍ PŘÍKAZŮ
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
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
Execution plan Ukázka
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 – 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 AND Ukázka histogramu
Frekvenční histogramy - příklad Ukázka jak by „viděl“ Oracle data bez histogramů
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
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í
OR-MAPPING
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
Obecné přínosy Oddělení dvou „různorodých“ vývojářských skupin Podpora transparentních cache
Nevýhody Pomalejší – Oproti nativnímu přístup Méně pod kontrolou – Lazy load Použití alternativy k SQL – HQL, apod.
Q&A