Adatbázis rendszerek II
description
Transcript of Adatbázis rendszerek II
Adatbázis rendszerek II
Kovács László
A tranzakció-kezelés alapjai
SELECTUPDATEINSERT
ERSTE BANK
ME
Tranzakció fogalma
több elemi művelet alkot egy egységetezek együttesen érvényesülhetnek csak
Tranzakció-kezelés feladata
A párhuzamosan bejövő igények ütemezése, a sorrendátalakítása a helyes eredmény érdekében
számla2+5 +3
A prog. B prog.
ra rb
wa wa
ua ub
SELECT
UPDATE
SELECT
UPDATE
‘lost update’ jelensége
Kívánalmak:
A: atomiságC: konzisztencia-őrzésI: izolációD: tartósság
History fogalma
Az izoláció problémája a párhuzamosan futó tranzakciók között lép fel.
History: az együtt élő tranzakciók rendszere
r1(x) w1(x) c1
r2(x) w2(x) c2
r1(x) w1(x) c1
r2(x) w2(x) c2
igényelt megvalósult
Transaction Manager
Zárolási mechanizmus
A TM átrendezi a parancsok végrehajtási sorrendjét
Zárolás: a parancsok blokkolása az erőforrások lefoglalásánkeresztül
objektumtranzakció A tranzakció B
A
Zárolási paraméterek:- objektum mérete- zárolás időtartama- zárolás jellege- blokkolt művelet
Zárolási mechanizmus
A zárolás folyamata erőforrás pazarlással járhat
- tranzakció várakozása- deadlock alakulhat ki- tranzakció menet közben abortálódhat
Működési változatok a zárolás menetében:
- optimista zárolás- pesszimista zárolás- finomított zárolási módok- SR figyelés
ellenőriz végrehajt ellenőriz végrehajt
végrehajt ellenőrizvégrehajt
Izolációs szintek
A teljes izoláció megöli a párhuzamosságotA gyakorlatban korlátozott izolációt igényelnek
SQL izolációs szintek: NOLOCK (anarchia, nincs izoláció) READ UNCOMMITED (nem véglegesített adat is olvasható) READ COMMITED (csak véglegesített adat olvasható) REPEATABLE READ (olvasott érték nem változik) SERIALIZABLE (teljes izoláció, nincs párhuzamosság)
r1(x) w1(x) c1
r2(x) w2(x) c2
r1(x) w1(x) c1
r2(x) w2(x) c2
KÉP
Salvador Dali (1094-1989):
Tranzakció leírása
Az elemek mellett a sorrendiséget is ismerni kell
Mikor lényeges a sorrendiség?
ha a két művelet - valamelyike írás - azonos objektumra vonatkoznak
Konfliktusban álló műveletek
Meg kell adni a végrehajtandó műveleteket - olvasás - írás- elfogadás - visszagörgetés
Fontos az érintett objektum megadása is- táblák - mezők
r(dolgozo)
tranzakció gráf
Tranzakció leírása
jelölések:x: objektumr(x), w(x), c, a: műveletekA B : megelőzési reláció
A tranzakció elemeit tömören egy gráffal adhatjuk meg
SELECT * FROM DOLGOZO;SELECT * FROM UZEM;UPDATE DOLGOZO SET FIZ=0;COMMIT;
r(uzem)
w(dolgozo)
cSQL parancsok
r1(dolgozo)
history gráf
A párhuzamosan futó tranzakciók együtteseA tranzakció elemek kibővülnek a tranzakciók közötti megelőzési relációkkalA műveletek jele kibővül egy tranzakció indexszelA history elemeit is egy gráffal adhatjuk meg
T1: SELECT * FROM DOLGOZO;T2: SELECT * FROM UZEM;T2: UPDATE DOLGOZO SET FIZ=0;T1: DELETE FROM UZEM;T2: COMMIT;T1: ROLLBACK;
r2(uzem)
w2(dolgozo)
a1SQL parancsok
History leírása
w1(uzem)
c2
History típusok
RA history: a tranzakció akkor záródhat le, ha már az a tranzakció is lezáródott, amiből olvasott
r1(x)
r2(x) c2w2(x)
w1(x) a1
r1(x)
r2(x) w2(x)
w1(x)
a1r3(x) w3(x)
ACA history: a tranzakció akkor olvashat egy adatot, ha az azt utoljára módosító tranzakció lezáródott
r1(x)
w2(x)
w1(x) a1
a2
History típusok
ST history: a tranzakció akkor olvashat vagy írhat egy adatot, ha az azt utoljára módosító tranzakció lezáródott
r1(x)
w2(x)
w1(x)
r2(x)
c1
c2
SR history: a tranzakciók a konfliktusban álló elemekre vonatkoztatva nem fedik át egymást
r1(x)
w2(x)
w1(x)
r2(x)
c1
c2
S history: a tranzakciók nem fedik át egymást
SR
RA ACA ST S
History típusok
history típusok kapcsolata
A teljes izolációt az ST SR history biztosítja
Különböző TM módszerek léteznek az ST SR history biztosítására :
- zárolás- TO
Zárolási típusok
Objektum finomsága
kis méret nagy méret
kevesebb konfliktus több konfliktusnagyobb adminisztráció kisebb adminisztráció
Zárolt művelet
- csak írás : exclusive (kizárólagos hozzáférés)- olvasási : shared (osztott hozzáférés)- módosítási: update (előjegyzett kizárólagos)
Zárolás időtartama
- művelet idejére (nem ad ACA historyt)- tranzakció végéig : 2PL (kétfázisű zárolás)
Helyes zárolás:
- helyesen formált a zárolás (zárolás- művelet-felengedés)- minden művelet zárol- van írási és olvasási zárolás- 2PL teljesül, a tranzakció végén felengedve az objektumokat
A helyes zárolás ST SR historyt ad
Zárolási típusok
A helyes zárolás teljes izolációt eredményez, a gyakorlatban sokszor enyhítenek rajta
r1(dolgozo)
history gráf
Két új művelet:
- zárolás : ltmód(x)
- felengedés: U(x)A zárolt objektumot igénylő tranzakció várakozásra kényszerül
T1: SELECT * FROM DOLGOZO;T2: SELECT * FROM UZEM;T2: UPDATE DOLGOZO SET FIZ=0;T1: DELETE FROM UZEM;T2: COMMIT;T1: ROLLBACK;
w2(dolgozo)
SQL parancsok
Kibővített history leírása
c2
l1r(dolgozo)
l2w(dolgozo)
r2(uzem)
w1(uzem)
l2r(uzem)
l1w(uzem)
u2(dolgozo)
u2(uzem)
a1
u1(uzem)
u1(dolgozo)
Deadlock kezelése
T1 T2
x
y
A tranzakciók egymás igényelt objektumait fogjákKülső beavatkozás kell a továbblépéshez
WFG módszer(körút van a gráfban)
Timeout módszer(letelt az idő)
Feloldás módszere:- detektálás- egyik tranzakció abortálása
Alap izolációs problémák:- lost update: w1(x) w2(x)- dirty read: w1(x) r2(x) w1(x)- not repeatable read: r1(x) w2(x) r1(x)
Izolációs szintek
A DBMS által biztosított tranzakció függetlenségi fokok
NOLOCK0. szint anarchia, mind a három hiba jelenség felléphet
READ UNCOMMITED1. szint nincs átlapolt írás
READ COMMITED2. szint első szint és nincs piszkos olvasás
REPEATABLE READ3. szint második szint és ismételhető az olvasás
SERIALIZABLE
kép
Salvador Dali. A nárcisz metamorfózisa
Tranzakció-kezelés speciális elemei
Tranzakció formális felírásaHistory formális felírásaRA-ACA kapcsolat biz.ACA-ST kapcsolat biz.SR,S és ST kapcsolat biz.Helyes zárolás és ST/SR kapcsolat bizKompatibilitási mátrix
Salvador Dali. Az emlékezet álhatatossága (1931)