260 likes | 403 Views
Zpracování SQL. Lubom ír Andrle lubomir.andrle @ unicorn.eu 5. přednáška 4 .1 1 .201 3. 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 í k u
E N D
Zpracování SQL Lubomír Andrle lubomir.andrle@unicorn.eu 5. přednáška 4.11.2013
Obsah • Zpracování příkazů SQL • Úvod do CBO • O-R mapping
Co se děje při volání SQL • Syntax check • Jde o sql? • Semanticanalysis • Kontrolaoprotidatovému slovníku • Kontrola práv na objekty • Hash textu • Select* from Tversus • SELECT * from T
Hardparse • 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 LibraryCache • Přiřazení varianty danému sql (hashsql) • Plán zůstává v cache dokud nevyexpiruje
Execution plan • Ukázka
Librarycache • Sdílená cache kurzorů • Ageout • 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/Highvalue • 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
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 • Oracle provede pouze základní validace • Použije se plán pro daný hashsql • Uložen v LibraryCache • 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í bindvariables • … wherename= ‘Andrle’ where name = :B1 • Hodnota B1 se doplní až po parsesql • 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íchcache
Nevýhody • Pomalejší • Oproti nativnímu přístup • Méně pod kontrolou • Lazyload • Použití alternativy k SQL • HQL, apod.