Please enable JavaScript.
Coggle requires JavaScript to display documents.
12. Transakce a zpracování dotazů (pravidla pro psaní SQL dotazů (používat…
12. Transakce a zpracování dotazů
Transakční zpracování
vlastnosti
(ACID)
I = isolated - operace jsou izolovány od ostatních transakcí
D = durable - po ukončení jsou data trvale uložena
C = consistent - na konci transakce není porušeno žádné integritní omezení databáze
každá transakce má úroveň izolace
read commited
repeatable read
read uncommited
serializable
A = atomic - celá nebo nic
př.: vlož záznam, zobraz záznam,...
implementace atomičnosti a trvanlivosti
schéma stínové databáze - konzistentní kopie, změni v ní
transakce
pracuje s konzistentní databází - během spuštění může být v nekonzistentním stavu, po ukončení konzistentní
problémy
výpadky (HW, systém,...)
souběžné spuštění transakcí
= posloupnost operací, která přistupuje a mění data
stavy transakce
aktivní - počáteční stav, dokud běží
částečně potvrzená - po poslední operaci tr.
chybující - po zjištění, že normální běh nemůže pokračovat
zrušená
znovu spustit
zamítnout (log. chyba)
transakce byla vrácena, databáze do původního stavu
potvrzená - po úspěšném dokončení
souběžné zpracování transakcí
+
zvýšené využití procesoru a disku - vyšší propustnost
+
snížená doba odezvy (nemusí se čekat an dokončení dlouhé tr.)
více tr. může být spuštěno zaráz
-
nutné zamykání řádků či tabulek - přepisování dat
-
nutná režie na řešení a předcházení deadlocku
deadlock - uváznutí
stav - tr. A čeká na prostředky, které drží B a B čeká na A
řešení - ukončením 1 z transakcí (nelze čistě, nutné předcházet)
plány
posloupnosti, určující chronologické pořadí instrukcí souběžných transakcí
musí obsahovat všechny operace + dodržet pořadí
druhy
sériový
paralelní
serializovatelnost
základní předpoklad - každá tr. zachovává konzistenci databáze --> dériový plán taky zachová
plán je serializovatelný, pokud je ekvival. sériovému plánu
pojmy
serializovatelnost podle konfliktu
pohledová serializovatelnost
Základní principy vyhodnocování dotazů
hašování
při správně zvolené velikosti (počtu poožek) hašovací tabulky a vhodně zvolené hašovací funkci má alg. O(1)
hašovací tabulka
vyhledávací datová struktura, která asociuje hašovací klíče s odpov. hodotami
při vyhledávání položky spočteme s pomocí klíče index hledané položky
je vysove nepravděpod., že 2 různým zprávám odpovídá stejný hash (index)
hašovací funkce
rozmisťuje záznamy do kapes
pomocí ní přiřazujeme hodnotě klíče index (ukazatel) do homogenní datové struktury (hašovací tabulka)
použití: k rychlejšímu prohledávání tabulky/porovnávání dat
např. hledání položek v databázi, odhadování duplic. záznamů v souboru
statické hašování
kyblík - 1+ záznamů
kyblík získám přímo z hešovací fce
hešovací fce
převádí množ. klíčů na množ. adres kyblíků
použití: vyhledávání i mazání avkládání
záznamy s rozd. klíči mohou být ve stejném kyblíku - sekvenčně
nejhorší - vše v 1 kyblíku
nejlepší - rovnoměrná, náhodná, každý kyblík stejně položek
přetečení kyblíku
řešení přetokovými kyblíky
-
pevná množina kyblíků
dynamické hašování
druh: rozšiřitelné hašování
začátek: i = 0
hodnota i se zvyšuje/snižuje podle velikosti souboru
používá se prefix pro získání adresy kyblíku, délka je i bitů
aktuální počet kyblíků je menší než 2^i - dynam. se mění
hašovací fce generuje velká čísla
modifikace hašovací fce
pro databáze, které mění velikost
náklady na vyhodnocení
optimalizace dotazů
analýza (parsing) a překlad
přelož dotaz do interní reprezentace
ta pak do relační algebry
analyzátor ověří syntaxi a existenci relací
optimalizace
nalezení nejlevnějšího plánu pro vykonání dotazu
výrazy v relační algebře mohou mít více ekviv. výrazů
výraz v rel. algebře může být vyhodnocen mnoha způsoby
snaha o nejlevnější plán
zaměření na: zdrojový čas, kapacitu paměti, program. práci
ovlivnění rychlosti zpracování dotazu
indexy - systém si vede info o záznamech v podobě stromu
vyjmenování sloupců - SELECT * FROM tab - vybere sloupce, které možná ani nepotřebujeme,...
operátor LIKE - obecně ne %neco% - databáze projde vše
dočasné tabulky - můžou zpomalit, pokud používány špatně
základní kroky zpracování dotazů: analýza a překlad, optimalizace, vyhodnocení
vyhodnocení
stroj pro vyhodnocení dotazu bere na vstupu plán vyh., spustí jej a vrátí výsledky dotazu
využití indexování
nejdůležitější technika urychlení dotazů - přístupu k datům
datové struktury umožňující rychlé hledání záznamů podle indexovaných položek
bývá mnohem menší - obsahuje jen sloupec a ukazatel do dat. souboru + přizpůsoben rychlému vyhledávání
jesliže nad konkr. sloupcem neexistuje index, musí se projít celá databáze
do zvl. souboru se uloží vhodně uspoř. seznam (B-strom) prvků, které se v tabulce vyskytují + k nim odkaz, na jakém místě se v datovém souboru nachází
využití: hledání prvku v intervalu
zpomalení operací (INSERT, UPDATE) měnících obsah indexovaných sloupcců
princip
vytvořením indexu zarezervuje databázový systém pro požadovaný index část paměti a uloží do něj info o rozmístění hodnot indexovaných sloupců v tabulce
pokud dojde k dotazu, týkajícího se indexovaných sloupcům není tabulka prohledávána podle toho, jak jsou za sebou řádky uloženy, ale pomocí info v indexu je přistupováno přímo k řádkům
alias rejstřík
vyhledávací klíč
atribut/množ. atributů k vyhledávání záznamů v souboru
indexový soubor
záznamy tvaru |vyhledávací klíč|ukazazel|
typicky menší než původní soubor
typy indexů
řazené (uspořádané klíče)
indexové záznamy uloženy uspořádaně podle vyhledávacího klíče
primární index - seřazený sekvenční soubor, vyhledávací klíč pr. indexu určuje pořadí záznamů v souboru
index-sekvenční soubor - seřazený sekvenční soubor s primárním indexem
sekundární index - jeho vyhledávací klíč určuje jiné pořadí než v seřazeném sekvenčním souboru
hešovací (rovnoměrně rozprostřené v pamět. prostoru hešovací fce)
porovnávání indexů
dotaz na přesnou shodu
dozaz na rozsah
prostorová režie
přístupová doba
doba pro vložení záznamu
doba pro smazání záznamu
indexový soubor
hustý
index. záznam uložený pro každou hodnotu vyhledávacího klíče
stejné hodnoty se v indexu neopakují
řídký
indexové záznamy pouze pro některé hodnoty vyhl. klíče
nalezení záznamu
nalézt ind. záznam s největším klíčem menším než K
prohledat sekvenčně od něj
méně prostoru pro uložení indexu a méně udržujících operací při vkládání a mazání záznamu
obecně pomalejší vyhledávání
vhodné řešení: řídký indexový soubor pro každý blok souboru
víceúrovňový index
pokud se prim. index nevejde do OP, mohou být přístupy pomalé
snížehní počtu diskových přístupů k ind. souboru - prim. index se považuje za sekv. soubor - vytvoří se pro něj řídký index
vnější index - řídký index na prim. indexu
vnitřní index - prim. index souboru
mohou být další úrovně, ale vše se musí aktualizovat
B+ stromy
+
mazání/vkládání: autom. reorganizace pouze s malými změnami
-
režie, více paměti
víceúrovňový index tvaru vyváženého n-árního stromu
definice
všechny listy stejná délka
každý uzel krom kořene a listu: n/2 až n potomků
1 kořen
listový uzel: (n-1)/2 až n-1 hodnot (klíčů)
zvl. případy
kořen není list: min. 2 potomci
kořen je list: 0 až n-1 hodnot
vlastnosti listu
pokud index není prim. - uloženy odkazy na bloky
pokud Li a Lj jsou listy a i < j, pak klíče v Li jsou menší než v Lj
ukazatel Pi ukazuje na záznam s klíčem Ki nebo na blok ukazatelů na záznamy, kde každý záznam má klíč Ki
Pn ukazuje na další list
nejpouž. index. struktura v datab. systémech
pohledy
předpis určuje, jakým způsobem mají být data z tabulek získána
někdy není vhodné, aby všichni uživ. viděli celý logický model databáze
= databázový objekt, který uživateli na základě nějakého předpisu zobrazuje zíznamy v databázi
CREATE VIEW nazev_pohledu AS SELECT ... FROM ...
výběr - průchod souborem
lienární
binární
pravidla pro psaní SQL dotazů
používat málo LIKE
málo IN, NOT IN
vyjmenovat sloupce
používat LIMIT
začátek - obecnější podmínky
výběr vhodného pořadí spojení
používat hinty
nastavit index