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
|
||||
- tartósság (durability): Ha egy tranzakció már sikeresen lefutott, akkor annak
|
||||
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
|
||||
** 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)
|
||||
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.
|
||||
|
@ -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
|
||||
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