Next six chapters added (79.25% done)
This commit is contained in:
parent
3cd2791890
commit
4486413223
1 changed files with 125 additions and 6 deletions
131
db.org
131
db.org
|
@ -1053,13 +1053,7 @@ semmi sem.
|
||||||
egyedül futna csak le
|
egyedül futna csak le
|
||||||
- tartósság (durability): Ha egy tranzakció már sikeresen lefutott, akkor annak
|
- tartósság (durability): Ha egy tranzakció már sikeresen lefutott, akkor annak
|
||||||
hatása ``nem veszhet el''.
|
hatása ``nem veszhet el''.
|
||||||
** Ütemezés
|
|
||||||
Tranzakciók elemi műveleteinek összessége, melyben a műveletek időbeli sorrendje
|
|
||||||
is egyértelműen meghatározott.
|
|
||||||
* lost update, non-repetable read, phantom read, dirty data
|
* lost update, non-repetable read, phantom read, dirty data
|
||||||
** Sorosíthatóság
|
|
||||||
Egy ütemezés pontosan akkor sorosítható, ha létezik olyan soros ütemezés,
|
|
||||||
amelyek minden hatása a módosított adatokra azonos az adott ütemezéssel.
|
|
||||||
** Lost update (elveszett frissítés)
|
** Lost update (elveszett frissítés)
|
||||||
Két tranzakció egyszerre ugyan azt az adategységet módosítani, úgy hogy az egyik
|
Két tranzakció egyszerre ugyan azt az adategységet módosítani, úgy hogy az egyik
|
||||||
felülírja a másik tranzakciót, így a az első módosítás elveszik.
|
felülírja a másik tranzakciót, így a az első módosítás elveszik.
|
||||||
|
@ -1077,3 +1071,128 @@ $T_1$ tranzakció azelőtt írt az adatbázisba, hogy sikeresen befejeződött
|
||||||
volna. Ha a $T_1$ tranzakció végül valóban sikertelennek bizonyul, akkor a
|
volna. Ha a $T_1$ tranzakció végül valóban sikertelennek bizonyul, akkor a
|
||||||
piszkos adat az adatbázisból mihamarabb eltávolítandó.
|
piszkos adat az adatbázisból mihamarabb eltávolítandó.
|
||||||
|
|
||||||
|
* Problémák a zárakkal: pattok és éhezés
|
||||||
|
** Zár (lock)
|
||||||
|
Hozzáférési privilégium egy adategységen, amely adható és visszaadható.
|
||||||
|
** Legális ütemezés
|
||||||
|
Legális az ütemezés, amelyben
|
||||||
|
- a lockolt adategységet fel is szabadítják
|
||||||
|
- ha egy adategység már foglalt - mert egy másik tranzakció zárat tart fenn
|
||||||
|
rajta -, akkor a tranzakció a zár feloldásáig várakozik
|
||||||
|
** Problémák zárakkal
|
||||||
|
*** Patt
|
||||||
|
Ha egy $T_m$ tranzakció azért nem tud továbblépni, mert egy olyan $A$
|
||||||
|
adategységre vár, amin egy olyan $T_n\neq T_m$ tranzakció tart fenn zárat, ami
|
||||||
|
azért nem tud továbblépni mert, ehhet olyan adategységhez kéne hozzáférnie, amin
|
||||||
|
már $T_m$ tart fenn zárat, akkor pattról, holtpontról (deadlock) beszélünk.
|
||||||
|
**** Megoldási lehetőségek
|
||||||
|
- A tranzakcióhoz szüséges összes adategységet már a kezdéskor lefoglalja. Ha
|
||||||
|
valamely zárat nem kapja meg, akkor meg sem próbálkozhat egyetlen művelettel sem.
|
||||||
|
- Ha egy tranzakció túl sokat várakozik, akkor valószínűleg patt-helyzetbe
|
||||||
|
került, ezért abortálandó
|
||||||
|
- Valamilyen egyértelmű sorrendet rendelünk az adategységekhez és zárat csak
|
||||||
|
ennek sorrendjében lehet kérni.
|
||||||
|
- Folyamatosan monitorozzuk a zárak elhelyezkedését, és ha valahol patthelyzetet
|
||||||
|
érzékelünk akkor valamely trancakciót, amely a pattot okozza, megszakítjuk.
|
||||||
|
**** Várakozási gráf
|
||||||
|
Olyan irányított gráf, ahol a csomópontjai a trancakciók, egy élt pedig akkor
|
||||||
|
rajzolunk a $T_i$ csomópontól a $T_j$ csomópont felé, ha $T_i$ tranzakció
|
||||||
|
bármely okból várakoztatja $T_j$ tranzakciót úgy, hogy nem tud továbbmenni.
|
||||||
|
**** Tétel
|
||||||
|
Adott időpillanatban nincs patt $\Leftrightarrow$ a várakozási gráfban nincs
|
||||||
|
kör, azaz a gráf DAG.
|
||||||
|
*** Éhezés (starving,livelock)
|
||||||
|
Ha egy tranzakció egy adategység lockolására vár, de közben más tranzakciók
|
||||||
|
mindig lockolják előtte a kédéses adategységet, akkor éhezésről beszélünk.
|
||||||
|
|
||||||
|
Egy lehetőség az éhezés elkerülésére, ha feljegyezzük a sikertelen zárkéréseket,
|
||||||
|
és ha egy adategység felszabadul, akkor zárat csak a zárkérések sorrendjében
|
||||||
|
ítélünk oda (FIFO stratégia)
|
||||||
|
* Ütemezések fajtái
|
||||||
|
** Ütemezés
|
||||||
|
Tranzakciók elemi műveleteinek összessége, melyben a műveletek időbeli sorrendje
|
||||||
|
is egyértelműen meghatározott.
|
||||||
|
** Sorosíthatóság
|
||||||
|
Egy ütemezés pontosan akkor sorosítható, ha létezik olyan soros ütemezés,
|
||||||
|
amelyek minden hatása a módosított adatokra azonos az adott ütemezéssel.
|
||||||
|
** Izolációs elv
|
||||||
|
Feltételezzük, hogy egy tranzakció elvárt, korrekt eredménye az, amit akkor
|
||||||
|
kapunk, ha a tranzakció futása közben más tranzakció nem fut.
|
||||||
|
** Korrekt
|
||||||
|
Egy ütemezés pontosan akkor korrekt, ha sorosítható.
|
||||||
|
** Ütemező
|
||||||
|
A DBMS azon része, amely az adatelérési igények megítékése felett dönt (pl
|
||||||
|
sorosíthatóság biztosítása). Ennek során
|
||||||
|
- Engedélyezheti az egyes műveleteket
|
||||||
|
- Ha ennek feltételei nem állnak fent, akkor
|
||||||
|
- várakozásra kényszerítheti
|
||||||
|
- abortálhatja
|
||||||
|
* Tranzakció modellek
|
||||||
|
** Egyszerű tranzakció modell
|
||||||
|
Egyszerű tranzakció modellről beszélünk ha:
|
||||||
|
- csak egy fajta zár léztezik
|
||||||
|
- egy adatelemen egy időben csak egyetlen zár lehet.
|
||||||
|
** sorosítási gráf, precedenciagráf
|
||||||
|
Olyan irányított gráf, amely csomópontjai tranzakciók és egy $T_i$ csomópontból
|
||||||
|
egy $T_j$ csomópontba akkor húzunk élt, ha van olyan $A$ adategység, amely egy
|
||||||
|
adott $S$ ütemezésben a $T_i$ tranzakció zárat helyezett el, majd a zár
|
||||||
|
felszabadítása után először a $T_j$ tranzakció helyez el zárat.
|
||||||
|
** Tétel
|
||||||
|
Egy $S$ ütemezés sorosítható $\Leftrightarrow$ a sorosítási gráf DAG.
|
||||||
|
* Kétfázísú zárolás (2PL)
|
||||||
|
** Kétfázísú zárolás (2PL)
|
||||||
|
Egy tranzakció a kétfázisú zárolás protokollt követi, ha az első
|
||||||
|
zárfelszabadítást megelőzni mindegyik zárkérés.
|
||||||
|
** Tétel
|
||||||
|
Ha egy legális ütemezés minden tranzakciója a $2PL\text{-t}$ követi, akkor az
|
||||||
|
ütemezés sorosítható.
|
||||||
|
** Zárpont
|
||||||
|
Az az időpont, amikor egy kétfázisú protokoll szerinti tranzakció az utolsó
|
||||||
|
zárját is megkapja.
|
||||||
|
** RLOCK-WLOCK modell
|
||||||
|
A modell két fajta zárt definiál:
|
||||||
|
- RLOCK: ha $T:RLOCK$ $A$ érvényes, akkor más tranzakció is olvashatja
|
||||||
|
$A\text{-t}$, de írni egy sem írhatja
|
||||||
|
- WLOCK: ha $T:WLOCK$ $A$ érvényes, akkor $T\text{-n}$ kívül más tranzakció nem
|
||||||
|
fér hozzá $A\text{-hoz}$, sem írásra , sem olvasásra.
|
||||||
|
** Tétel
|
||||||
|
Egy $RLOCK-WLOCK$ modellbeli $S$ ütemezés sorosítható $\Leftrightarrow$ a fenti
|
||||||
|
szabályok szerint rajzolt sorosítási gráf DAG.
|
||||||
|
** Definíció
|
||||||
|
Egy $RLOCK-WLOCK$ modell szerinti tranzakció kétfázisú, ha minden $RLOCK$ és
|
||||||
|
$WLOCK$ megelőzi az első $UNLOCK\text{-ot}$
|
||||||
|
** Tétel
|
||||||
|
Ha egy ütemezésben csak kétfázísú, $RLOCK-WLOCK$ modell szerinti tranzakciók
|
||||||
|
vannak, akkor az ütemezés sorosítható.
|
||||||
|
* A fa protokoll
|
||||||
|
Az egyszerű tranzakció modellt követjük és egy csomópont
|
||||||
|
zárolása nem jelenti a gyerekek zárolását is.
|
||||||
|
** Szabályai
|
||||||
|
1. Egy tranzakció az első $LOCK\text{-ot}$ akárhová teheti
|
||||||
|
2. A további $LOCK\text{-ok}$ csak akkor helyezhetők el, ha az adategység
|
||||||
|
szűlőjére az adott tranzakció már rakott zárat
|
||||||
|
3. Egyazon tranzakció kétszer ugyanazt az adategységet nem zárolhatja
|
||||||
|
** Tétel
|
||||||
|
A fa protolollnak eleget tevő legális ütemezések sorosíthatók.
|
||||||
|
* Figyelmesztető protokol
|
||||||
|
Az egyszerű tranzakció modellt követjük, de egy csomópont zárolása a gyerek és
|
||||||
|
az összes leszármazott csomópontok zárolását is jelenti(impicit zár).
|
||||||
|
** Zárkonfliktus
|
||||||
|
Egy $T_2$ tranzakció, egy olyan adategységre tesz lockot, amely leszármazottját
|
||||||
|
már egy $T_1$ tranzakció lezárt magáának.
|
||||||
|
** Figyelmeztető protokol zárművei
|
||||||
|
- $LOCK$ $A$: zárolja $A\text{-t}$ és az összes leszármazott csomópontot is. Két
|
||||||
|
különböző tranzakció nem tarthat fent zárat ugyanazon adategységen.
|
||||||
|
- $WARN$ $A$: $A\text{-ra}$ figyelmeztetést rak. Ekkor $A\text{-t}$ más
|
||||||
|
tranzakció nem zárolhatja
|
||||||
|
- $UNLOCK$ $A$: eltávolítja a zárat vagy az $UNLOCK\text{-ot}$ kiadó tranzakció
|
||||||
|
áltak elhelyezett figyelmeztetést $A\text{-ról}$
|
||||||
|
** További szabályok
|
||||||
|
1. Egy tranzakció első művelete kötelezően $LOCK$ gyökér vagy $WARN$ gyökér
|
||||||
|
2. $LOCK$ $A$ vagy $WARN$ $A$ akkor helyezhető el, ha $A$ szülőjén ugyanaz a
|
||||||
|
tranzakció már helyezett el $WARN\text{-t}$.
|
||||||
|
3. $UNLOCK$ $A$ akkor lehetséges, ha gyerekein már ugyanaz a tranzakció nem tart
|
||||||
|
fenn sem $LOCK\text{-ot}$ sem $WARN\text{-t}$
|
||||||
|
4. Kétfázisú: az első $UNLOCK$ után nem következhet $LOCK$ vagy $WARN$
|
||||||
|
** Tétel
|
||||||
|
A figyelmeztető protokollt követő legális ütemezs zárkonfliktusmentesek és sorosíthatóak.
|
||||||
|
|
Loading…
Reference in a new issue