Adatbázis rendszerek II. VII-VIII. előadás Előadó: Barabás Péter Dátum: 2008. 11. 13./2008.11.20.
Osztott erőforrások OS DB 2
Párhuzamosság hasznos és kényelmes a felhasználó oldaláról kihívás problémák a konkurens végrehajtásnál konfliktus helyzetek (azonos erősforrás igény) megoldások: várakoztatás várakozó sorok (nyomtató) adatbázis-kezelésben egyedi vonások 3
ACID elvek Atomicity Consistency Isolation Durability 4
Atomiság műveletek nem izoláltak, egyediek, hanem kapcsolat van közöttük a felhasználó rendszerint műveletsort akar végrehajtani, nem egyedi műveletet külön-külön nincs értelmük, illetve hibához, ellentmondáshoz vezethetnek pl. készpénzfelvétel automatából pinkód beírás ellenőrzés művelet megadás készpénz beállítás hitelkeret ellenőrzés készpénz levétele a számláról pénz kiadása kártya kiadása bizonylat kiadása a DBMS-nek képesnek kell lennie műveletek visszagörgetésre félig elvégzett műveletsor nem maradhat a rsz-ben 5
Konzisztencia minden felhasználó számára konzisztens kell legyen konzisztens állapotból konzisztens állapotba vigyen integritás őrzés pl. törléskor archiválás kiváltó esemény választevékenység trigger archív táblába beszúrás gond: nem hajtódik végre a választevékenység a rekord kitörlődik, de nem archiválódik nem megengedhető integritás sértő műveletek megakadályozása pl. életkor mezőbe 3012 kerül 6
Izoláció a felhasználó a párhuzamosság káros mellékhatásaiból minél kevesebbet érezzen legjobb, ha a felhasználó úgy érzi, hogy egyedül dolgozik a rendszerben munkájának eredménye csak a kiinduló állapottól függ, nem az egyéb tevékenységektől 7
Tartósság műveletsor sikeres végrehajtása esetén a felhasználó visszajelzést kap biztos lehet abban, hogy a műveletsor hatása véglegesen beíródott az adatbázisba későbbi művelet nem törölheti vissza lezárt tranzakciók eredményeit az adatbázis-kezelő mindenáron őrizze meg gondoskodjon a véglegesített adatok elvesztése elleni védelemről 8
Tranzakciókezelés az adatbázis-kezelés központi fogalma minden művelet tranzakcióba szervezetten hajtódik végre a DBMS nem enged tranzakción kívüli művelet végrehajtást login DML logout commit abort begin transaction INSERT... DELETE... UPDATE... end transaction 9
Tranzakció fogalma Tranzakció: egy logikailag összetartozó, egységként kezelt műveletsor, melyre teljesülnek az ACID elvekben megfogalmazott követelmények 10
Tranzakciók leírása műveletsort kell megadni elemei: műveletek: olvasás: r, írás: w objektum, amelyre hatnak paraméterként: r(x), w(x) tranzakció lezárása véglegesítés (commit): c visszagörgetés (abort): a sorrendiség: megelőzési reláció: p 1 p 2 11
Tranzakciók ábrázolása ábrázolás gráffal: csomópontok a műveletek, irányított élei a megelőzési relációk nem minden gráf létező tranzakciót jelent kötöttségek érvényes tranzakció esetén: tartalmaznia kell egy lezárási műveletet (c,a) pontosan csak az egyiküket tartalmazhatja a lezárási művelet az utolsó, az összes többi megelőzi egyértelmű végrehajthatósági feltétel: a műveletsor eredménye azonos kezdőfeltételek mellet mindig egyezzen meg a leírt tranzakció eredményével 12
Tranzakciók ábrázolása II. r(x) w(x) w (x) c w(x) 3 w (x) 6 w(x) w (x) w (x) w(x) bármely két művelet között létezzen megelőzési reláció: egyértelmű, de nem szükséges minden esetben általában csak a tranzakció eredménye a fontos a közbenső állapotok érdektelenek több út is adhatja ugyanazt az eredményt ekkor a rendszer bármelyiket választhatja 13
Tranzakciók ábrázolása III. r(x) w(x) c r(x)? r(y) r(y) w(y) w(x)? w(y) Kérdés: mely elemek közötti relációk (nem) hagyhatók el? eredmény ugyanaz Válasz: amelyek sorrendje fontos a végeredmény szempontjából konfliktusban álló műveletpárok 14
Konfliktusban álló műveletek sorrendiség kihat az eredményre konfliktus esetén azonos objektumnak kell szerepelnie mindkét műveletben különböző objektumokhoz való hozzáférés nincs hatással egymásra legalább az egyik írási művelet az olvasások nem módosítják az adatbázist, bármikor felcserélhetőek írási műveletek időbeli pozíciója lényeges gráf esetén egyértelmű a végrehajtás eredménye: a gráfban bármely két konfliktusban álló műveletpár között létezik megelőzési reláció ezt a tranzakció megadásánál meg is követeljük 15
Tranzakció formális leírása T = (T e, ) T e = { r(x), w(x ), a, c x,x DB } T e T e ahol DB az adatbázisbeli objektumok halmaza T tranzakcióra teljesülnek: - a T e c T e - p T e p a, ha a T e és p c, ha c T e - p 1,p 2 T e, p 1 és p 2 konfliktusban áll p 1 p 2 vagy p 2 p 1 16
Tranzakciók ekvivalenciája ugyanazon elemeket tartalmazza a konfliktusban álló műveletek között ugyanolyan a megelőzési sorrend ugyanazon kiinduló állapotból, ugyanazon műveletek az eredmény szempontjából ekvivalens sorrendben hajtódnak végre 17
History fogalma a rendszerben futó tranzakciók összessége megadása hasonló a tranzakció megadásához műveletekből áll lényeges a végrehajtási sorrend ábrázolása: gráffal a tranzakció azonosítóját is feltüntetjük, mint művelet indexet 18
History példa r 1 (x) w 1 (x) c 1 r 2 (x) w 2 (x) a 2 19
History formális leírása H = (H e, ) H e a history-hoz tartozó műveletek, a megelőzési reláció, azaz H e = T e T és teljesül az alábbi feltétel p 1,p 2 H, p 1 és p 2 konfliktusban áll p 1 p 2 vagy p 2 p 1 20
Hibás history gráf r 1 (x) w 1 (x) c 1 r 2 (x) w 2 (x) w 2 (y) c 2 r 3 (y) w 3 (x) w 3 (y) c 3 Kérdés: mi a hiba? 21
History-k ekvivalenciája azonos feltételekből kiindulva azonos eredményt szolgáltatnak a konfliktusban álló műveletpárok sorrendje lényeges csak az elfogadott tranzakciók hatása marad meg ekvivalensek a history-k, ha azonos tranzakciókat tartalmaz minden nem abortált tranzakcióhoz tartozó, konfliktusban álló műveletek között ugyanolyan irányú megelőzési reláció áll fenn 22
History típusok követelmények: ACID elvek nem mindegyik teljesíti az elveket w 1 (x) r 1 (y) w 1 (y) a 1 r 2 (x) w 2 (x) c 2 Mi okozza problémát? létezik lezárásuk a lezárás az utolsó művelet minden konfliktus esetén létezik megelőzési reláció 23
Megoldás w 1 (x) r 1 (y) w 1 (y) a 1 r 2 (x) w 2 (x) c 2 T1 kiír egy értéket x-be T2 olvassa ezt, majd ez alapján új értéket ír x-be T2 véglegesíti az eredményt a T1 tovább fut, olvassa y-t, majd módosítja T1 abortálódik w 1 (x) utasítás-t hogyan görgetjük vissza? T2 nem véglegesített adatokat használt fel, ezért T2 tranzakciót is vissza kell görgetni tartósság elvét kellene felrúgni konzisztencia vs. ACID-elvek 24
RecoverAble history Egy history visszagörgethető, ha minden tranzakció később zárul le minden olyan tranzakciónál, amiből ő olvasott w 1 (x) r 1 (y) w 1 (y) a 1 r 2 (x) w 2 (x) c 2 25
RA history II. teljesül az RA history, mégis hibás az alábbi history w 1 (x) r 1 (y) w 1 (y) a 1 r 2 (x) w 2 (x) r 3 (x) w 3 (x) abortálási lavina! T2 olyan adatot olvasott, melyek helyessége még nem dőlt el r 4 (x) 26
Avoiding Cascadeless Abort history Az abortálási lavinát elkerülő history-ban minden tranzakció csak már lezárt tranzakcióból olvas. T2 csak olyan adatokat olvashat, melyek helyessége már biztosított, vagyis csak a T1 által véglegesített adatokat szabad felhasználni w 1 (x) r 1 (y) w 1 (y) a 1 r 2 (x) w 2 (x) r 3 (x) w 3 (x) 27
ACA history II. mind az RA, mind az ACA kritériumai teljesülnek, mégis akad probléma r 1 (x) w 1 (x) w 1 (z) a 1 r 2 (z) w 2 (x) a 2 probléma: előbb T1, majd T2 módosítja x-et, végén abortálódik mindkettő vissza kell állítani a módosítások előtti értékeket előbb a w 1 (x) előtti értéket, majd w 2 (x) előttit induló érték visszaírásához ki kell előbb olvasni (implicite) írás előtt 28
STrict history A szigorú history-ban egy tranzakció csak akkor írhat vagy olvashat egy adatelemet, ha az azt előtte módosító másik tranzakció már lezáródott T2 tranzakció csak olyan adatokat olvashat vagy írhat, melyet egy lezárt tranzakció módosított utoljára r 1 (x) w 1 (x) w 1 (z) a 1 r 2 (z) w 2 (x) a 2 29
Újabb probléma r 1 (x) w 1 (x) c 1 w 3 (x) c 3 r 2 (x) w 2 (x) c 2 T1: normál fizetés tranzakció T2: rendkívüli jutalmak tranzakció r 2 (x) r 1 (x) 200000 +100000 300000 w 1 (x) +50000 250000 w 2 (x) lost update T1 beli olvasás megelőzi T2 beli írást, T1 beli írás követi T2 beli olvasást 30
SeRializable history A sorossal ekvivalens history-ban bármely két tranzakció minden konfliktusban álló műveletpárjai között, ahol a műveletek nem azonos tranzakcióhoz tartoznak, azonos a megelőzési reláció. a műveletek a tranzakciók szerinti sorrendben hajtódnak végre r 1 (x) w 1 (x) a 1 r 2 (x) w 2 (x) c 2 31
Serial vagy soros history A soros historyban egy tranzakció bármely két művelete közé nem ékelődik be egy másik tranzakció valamely művelete. r 1 (x) w 1 (x) c 1 w 2 (x) c 2 r 3 (x) 32
History-k kapcsolata SR RA ACA ST S Cél: ST SR history 33
Következmények kevés a megfelelő history lecsökkentik a párhuzamosságot, a konkurencia megvalósulási lehetőségeit teljesítmény korlátozás ACID elvek nagyobb konkurencia hatékonyabb rendszer 34
Izolációs problémák konfliktusban álló műveletek keverése két írás egymás után lost update w 1 (x) olvasás két írás között dirty read írás két olvasás között not repeatable read w 2 (x) w 1 (x) r 2 (x) w 2 (x) r 1 (x) w 2 (x) r 1 (x) 35
Izolációs szintek 0. szint anarchia, mind a három hiba jelenség felléphet 1. szint nincs átlapolt írás 2. szint első szint és nincs piszkos olvasás 3. szint második szint és ismételhető az olvasás 36
SQL utasítások SET TRANSACTION ISOLATION LEVEL szint; NOLOCK nem foglalja le a tranzakció által érintett objektumokat 0. szint READ UNCOMMITED piszkos, véglegesítés előtti adatokat is olvashatnak átlapolt írás nem megengedett = 1. szint READ COMMITED csak véglegesített, tiszta adatok olvashatók 2. szint REPEATABLE READ teljesül az ismételhető olvasás 3. szint két olvasás között bővülhet a tábla SERIALIZABLE a teljesen soros végrehajtást kérvényezi nincs elméleti izolációs szint (3. szint) minden nemű módosítás tiltott 37
Zárolási módszerek a tranzakció használat idejére lefoglalja az objektumot a többi tranzakció korlátozva van az objektum elérésében várakozás várakozás feloldás: elérhető már az objektum kiderül, hogy nem érdemes várni nyilván kell tartani objektumonként kiegészítő információkat: szabad-e, ki foglalja (felszabadításnál tudni kell) helytöbblettel jár a zárolás 38
Zárolási szintek Mező szintű zárolás Rekord szintű zárolás Tábla szintű zárolás 39
Előnyök és hátrányok Előny Hátrány Mező szintű zárolás nagyobb fokú párhuzamosság jelentősebb konkurencia sokkal több kiegészítő információt kell tárolni és karbantartani jelentős hely, idő költségnövekedés Tábla szintű zárolás sokkal egyszerűbb nyilvántartani gyorsabban adminisztrálható nagyon lecsökkenti a konkurenciát nagyon sokáig kell várakozni a párhuzamosan futó tranzakcióknak egymásra 40
Zárolási költségfüggvények a tranzakciók közötti konkurencia mértéke a párhuzamos hozzáférések valószínűségétől függ rekord szintű zárolások közelében minimális d u rv a fin o m d u rv a fin o m H o s s z ú tra n z a k c ió k R ö v id tra n z a k c ió k 41
Zárolási idő Alapelv: csak addig zároljunk egy objektumot, ameddig szükséges lefoglalás: amikor szükség van rá felengedés: adatok véglegesítése után, tranzakció végén hiba: a művelet után azonnal felengednénk T2 olvas T1 által írt, nem véglegesített objektumot RA, ACA feltétel sérülne 42
Kétfázisú zárolás (2PL) 1. fázis: zárolások lefoglalása 2. fázis: zárolások felengedése a tranzakció végén Kétfázisú zárolás esetén a tranzakció végéig csak zárolások történhetnek, majd a tranzakció végén egyidejűleg történik a zárolások felengedése. Minden zárolási művelet megelőz minden feloldást. a legtöbb RDBMS-ben 2PL zárolás biztosítja az ACID-elveknek megfelelő history-k megvalósítását 43
Mely műveletnél zároljunk? ST és SR szabályok: a konkurens műveleteknek sorosan kell végrehajtódniuk, beleértve a tranzakciók lezárási utasításait írási műveletkor szükséges a zárolás RA követelmény sérülne w 1 (x) r 1 (x) l w (x) w 1 (x) olvasáskor is szükséges lehet az olvasás lost update jelenség r 1 (x) r 2 (x) w 1 (x) w 2 (x) gyakorlatban kissé módosul a zárolás l r (x) r 1 (x) 44
Zárolás típusok normál zárolás: zárolás alatt más tranzakció nem olvashatja és/vagy írhatja a foglalt elemet írási és olvasási zárolás: írási zárolás: más tranzakció se nem olvashatja, se nem írhatja az objektum értékét olvasási zárolás: csak a másik tranzakció általi értékmódosítást akadályozza meg 45
Példa normál és kétfajta zárolásra r 1 (x) w 1 (x) c 1 w 3 (x) Normál zárolás esetén: c 3 r 2 (x) w 2 (x) c 2 T2 lefoglalja x-et, az r1(x) már nem tud végrehajtódni r1(x) várja T2 befejeződését T2 írja x-et, majd véglegesítődik ekkor folytatódhat T1 futása írja x-et, amely a megnövelt érték elkerülhető a lost update jelenség 46
Példa normál és kétfajta zárolásra II. r 1 (x) w 1 (x) c 1 w 3 (x) c 3 r 2 (x) w 2 (x) c 2 Írási és olvasási zárolás esetén: T2 zárolja x-et olvasásra, az r1(x) olvashatja T1 zárolja x-et olvasásra w1(x) írásra zárolja az elemet T1 véglegesítődik, majd az írási zárolás megszűnik ekkor folytatódik T2 futása zárolja az elemet írja az r2(x) által kiolvasott értéket felhasználva a lost update jelenség még mindig fennáll 47
Helyesen formált zárolás minden művelet előtt van egy zárolás minden zárolást követi annak művelet utáni felengedése l 1 (x) w 1 (x) u 1 (x) 48
Helyes zárolás helyesen formált a zárolá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 Megjegyzés: gyakorlatban enyhítenek a szigoron a párhuzamosság miatt 49
Zárolások felminősítése a zárolás szintjének, szigorúságának megnövelése lr 1 (x) r 1 (x) u 1 (x) lw 1 (x) w 1 (x) nem 2PL más tranzakció megszerezheti az objektumot T1 előtt a T csak egyszer zárolhat, és ha írni is akar, akkor írásra kell zárolni lw 1 (x) r 1 (x) w 1 (x) u 1 (x) u 1 (x) 50
Zárolások felminősítése II. Probléma: nem biztos, hogy a tranzakció tudja előre, hogy írni is fog nagyon lecsökkenti a párhuzamosság lehetőségét, mivel túl hamar lefogja kizárólagos használatra az x objektumot Megoldás: a zárolást felengedés nélkül egy magasabb szintre kell vinni lr 1 (x) r 1 (x) lw 1 (x) w 1 (x) u 1 (x) 51
Zárolások gyenge pontja a zárolások biztos megoldást nyújtanak a helyes history megvalósításra gyenge pont: tranzakciók várakozásra kényszerítése többen várakoznak körbevárakozás alakulhat ki végtelen várakozás lr 2 (x) r 2 (x) lr 1 (x) r 1 (x)? w 1 (x) w 1 (x) DEADLOCK várakozás várakozás 52
Deadlock kezelése X lefoglalás igénylés T1 Y T2 W Z egyik tranzakció sem tud továbblépni, mindkettő a végtelenségig várakozna Feloldási módszerek: Timeout módszer WFG gráf 53
Timeout mechanizmus a rendszer figyeli, mennyi ideig várakozott a tranzakció a zárolás feloldására ha a várakozási idő túllép egy megadott időhatárt, akkor a TM deadlock jelenségként értékeli, melyet fel kell oldani egyik megoldás: valamelyik tranzakció abortálása abortálandó tranzakció kiválasztására számos stratégia létezhet ~ OS memóriakezelés kérdés: mit preferálunk? eltöltött idő elvégzett módosítások még hátralévő idő 54
Wait-For Graph a gráf elemei a futó tranzakciók a gráf élei irányítottak T1-ből mutut él T2-be, ha van olyan objektum, amit T2 lefoglalt és T1 is szeretne elérni, s T1 ezen objektum felszabadulására vár deadlock jelentése a várakozások szintjén: nincs vége a várakozási láncnak, azaz nincs esély, hogy a várakozási lánc valamikor is megszűnjön WFG gráfban: akkor van deadlock, ha a létezik körút amennyiben a gráf körútmentes, úgy a history végrehajtása során nem lépett fel deadlock 55
WFG II. Körútmentes: T1 T2 T3 Deadlock: T1 T2 T3 56
Felminősítésből adódó deadlock lr 1 (x) r 1 (x) lw 1 (x) w 1 (x) u 1 (x) lr 2 (x) r 2 (x) lw 2 (x) w 2 (x) olvasási zárolások futhatnak párhuzamosan két írási zárolás nem élhet egyidejűleg lw 1 (x)-nélt1 kénytelen várakozni T2 olvasásra fogta T1 lw 2 (x)-nélt2 kénytelen várakozni T1 olvasásra fogta T2 deadlock alakult ki u 2 (x) 57
Módosítási zárolás (update lock) a fenti blokkolás elkerülése végett módosítási zárolás arra utal, hogy az adatot a tranzakció később módosítani szeretné egyidejűleg csak egy tranzakció módosíthat nem szabad megengedni, hogy más tranzakció is jelezze ez irányú szándékát felminősítést viszont már csak módosítási zárolásból lehet engedélyezni, hogy ne legyen váratlan írási igény lu 1 (x) r 1 (x) lw 1 (x) w 1 (x) u 1 (x) lu 2 (x) r 2 (x) lw 2 (x) w 2 (x) u 2 (x) 58
Kompatibilitási mátrix l r l u l w l r Igen Igen Nem l u Nem Nem Nem l w Nem Nem Nem 59
SGT (Serialization Graph Testing) módszer a history SR tulajdonságának ellenőrzésére szolgál a konfliktusban álló műveletekre vonatkozóan teljesül-e a soros végrehajtás az SR végrehajtás esetén bármely két tranzakció között csak egyféle megelőzési reláció érvényesül az SG-gráf a history-hoz rendelhető, és a history SR voltának eldöntésére szolgál 60
SG gráf Az SG gráf, egy olyan gráfot jelöl, melynek elemei a history-ban futó, commit-tal véglegesített tranzakciók, élei irányítottak. Akkor létezik él egy T1 csomópontból a T2 csomópontba mutatva, ha létezik olyan konfliktusban álló műveletpár, melynek egyik tagja T1-hez, a másik tagja T2-höz tartozik, s a T1 csomóponthoz tartozó művelet megelőzi a T2- höz tartozó műveletet. 61
SG gráf II. két csomópont között két él is létezhet ellentétes irányításúak (T1 T2, T2 T1) a gráfban nem vesznek részt az abortált tranzakciók SR history esetén a history linearizálható kapcsolatban álló tranzakciókból épül fel nem keverednek a különböző tranzakciókhoz tartozó műveletek (a konfliktusban álló műveletek esetén) 62
SG gráf III. A history akkor és csak akkor SR tulajdonságú, ha a hozzá tartozó SG gráf körútmentes. körút esetén a tranzakciók nem alkotnak lineáris láncot r 1 (x) w 1 (y) w 1 (y) c 1 r 2 (z) w 2 (z) r 2 (y) w 1 (z) c 2 r 3 (x) w 3 (x) c 3 r 4 (z) w 4 (y) a 4 T3 T1 T2 63
Módosított SG gráf régebbi, érdektelen tranzakciók kikerülnek a gráfból helytakarékossági okok élek kialakításához ismerni kell a tranzakció által elvégzett műveleteket minden tranzakciónál nyílván kell tartani, mely objektumot írta, ill. olvasta a felhasznált SG gráf tartalmaz még le nem zárt, még futó tranzakciókat is ciklikusság időbeni felfedezése kevesebb idő és erőforrás pazarlás történik egy tranzakció korábban történő abortálása révén 64
SGT mechanizmus 1. új beérkező művelet esetén a TM ellenőrzi, hogy benn vane már a tranzakció az SG gráfban, vagy egy új tranzakcióról van szó 2. új tranzakció esetén bekerül a gráfba, mint új csomópont 3. ellenőrzésre kerül, hogy a művelet mely más korábban kiadott műveletekkel van konfliktusban 4. minden érintett csomóponthoz él kerül az aktuális csomópontból kiindulva 5. az új SG gráf tesztelése, hogy tartalmaz-e körutat 6. ha igen, akkor az új művelet nem érvényesíthető, a tranzakcióját is vissza kell görgetni 7. abortálódik a tranzakció és a gráfból is kikerül a hozzá tartozó élekkel 8. ha nincs körút, akkor a művelet elvégezhető a korábbi műveletek sikeres nyugtázása után 65
SGT csomópont törlése csak akkor, ha a jövőben nem válhat körút láncszemévé egy csomópontba bármikor mutathat új él későbbi műveletek konfliktusban állhatnak a korábbiakkal körútban való részvétel kizárása: a csomópontból nem indul és nem is indulhat ki új él tranzakció lezárása után ilyen művelet már nem jöhet létre ha a tranzakció lezárásakor nem indul ki él, akkor a jövőben sem fog Egy csomópont akkor törölhető az éleivel együtt: ha már lezáródott nem indul ki belőle él Csomópont törlése több csomópont is törölhető 66
Timestamp Ordering (TO) minden tranzakcióhoz rendel egy időbélyeget, mely jelzi hogy mikor jött létre a tranzakció a többihez viszonyítva időbélyeg egy sorszám korábbi tranzakciók időbélyege kisebb későbbi tranzakcióké nagyobb A különböző tranzakciókhoz tartozó, egymással konfliktusban álló műveletek esetén a műveletek végrehajtási sorrendje feleljen meg a tranzakciók időbélyeg sorrendjének. Vagyis azon műveleteknek kell előbb végrehajtódniuk, amelyek időbélyege kisebb. 67
TO II. amennyiben egy tranzakció olyan objektumot akar módosítani vagy olvasni, melyet egy fiatalabb tranzakció egyszer már módosított a műveletet a TM megakadályozza abortálja az idősebb tranzakciót abortálás után újraindítja a tranzakciót nagyobb időbélyeggel újra próbálkozhat 68
Zárolás vs. TO Zárolás lefoglalás felengedése után bármely tranzakció hozzáférhet az objektumhoz sokat várakoztat, deadlock léphet fel TO nincs foglalási idő, az objektum bármikor elérhető csak az utolsó foglalást végző tranzakciónál fiatalabb tranzakciók férhetnek hozzá egy objektumhoz túlságosan könnyen kerülhet abortálásra egy tranzakció nincs benne várakoztatás súlyos hibák 69
TO követelmények csak az utolsó hozzáférést végző tranzakció időbélyegét figyeli, nem a feldolgozottságot egy objektumon egyidejűleg csak egy művelet végezhető szükséges rendszerkomponens: egy művelet ne kezdődjön el addig, amíg a korábban engedélyezett kisebb sorszámú műveletek be nem fejeződnek műveletek késleltetése 70
TO problámák w 1 (x) r 1 (y) w 1 (y) a 1 r 2 (x) w 2 (x) c 2 az x objektumot előbb T1 azután T2 kezeli az y objektumhoz csak T1 fér hozzá mindkét tranzakció lefuthat probléma T1 abortálása miatt r 2 (x) hamis értéket kap nem teljesül az RA history módosítani kell az alap TO-n minden tranzakció csak már véglegesített adatokhoz férjen hozzá késleltetés 71
ST-TO TO módszer olyan TO módszer, amely biztosítja a TO history-t egy műveletet addig kell késleltetni, amíg az objektumot utoljára módosító kisebb sorszámú tranzakció le nem záródik egyfajta zárolást kell alkalmazni 72
TO ütemezés működése alapelem: tudjuk, mely tranzakció használta az egyes objektumokat utoljára minden objektumhoz kell egy jelzőt társítani az objektumot utoljára kezelő tranzakció időbélyege ezen jelző és az új igénnyel fellépő tranzakció időbélyegének összehasonlítása alapján dől el az objektumhoz való hozzáférés engedélyezése, vagy abortálása egy olvasási művelet csak egy írásival áll konfliktusban külön nyílván kell tartani mind az olvasásra, mind az írásra, mely időbélyegű tranzakció volt az utolsó engedélyezett művelet igénylője egy objektumhoz olvasási és írási jelzőt is csatolni kell 73
Abortálások csökkentése a tranzakciók konkurenciájának csökkentésével oldható meg egyik javaslat: teljesen soros végrehajtás a TM létrehoz egy várakozósort a végrehajtásra jelentkező műveletek számára a várakozólistában minden futó tranzakciónak legyen pozíciója, bejegyzése a bejegyzett műveletek közül a legkisebb sorszámút veszi sorra biztosítható az S history egy T tranzakció első művelete csak akkor kerülhet végrehajtásra, ha a rendszerben nem létezik tőle kisebb időbélyeggel rendelkező és még futó tranzakció ha viszont a tranzakció megkapta a vezérlést, akkor nem engedi el, míg ő maga be nem fejeződik, hiszen menet közben nem jöhet tőle kisebb sorszámú tranzakció 74
Optimista TO a TM megpróbálja kiküszöbölni a menetközbeni várakozásokat és a később feleslegesnek bizonyuló abortálásokat a műveleteket hagyjuk addig futni, amíg van esély a tranzakció megmaradására menetközben feltesszük, hogy a tranzakció sikeresen le fog futni ehhez módosítanunk kell az alap TO ütemezésen 75
Optimista TO II. objektum írási, olvasási TS jelző a jelzők a maximális értékű TS-t tartalmazzák a tranzakciók nem közvetlenül a DB-t módosítják kapcsolódik hozzájuk egy egyedi munkaterület az így letárolt módosítások egyszerre, a tr. végén kerülnek át az adatbázisba így a DB csak lezárt tranzakciók által módosított adatokat tartalmaz olvasás esetén: ha a tr. még nem módosította az objektumot, akkor az adatbázisból kell venni az értékét időbélyeg ellenőrzés, módosítás ha a TS(T r )<TS(X w ) TO elvek megsérülnek abortálás ha a TS(T r )>TS(X w ), elvégezhető a művelet 76
Optimista TO III. commit esetén: TM megpróbálja véglegesíteni a műveleteket sorba veszi a módosított objektumokat a saját munkaterületéről mindegyikre ellenőrzi, hogy a véglegesítés során nem sérül-e a TO-elv a DB-ben nagyobb írási v. olvasási jelző szerepel ekkor abortálni kell a tranzakciót sikeres ellenőrzés esetén a DB-beli objektumok is átíródnak az új értékekre az írási időbélyegek is aktualizálódnak biztosítható az RA, ACA, ST history 77
Lost update optimista TO-val r 1 (x) w 1 (x) c 1 c 0 r 2 (x) w 2 (x) c 2 r 2 (x) beállítja x olvasás jelzőjét 2-re r 1 (x) engedélyezett, de nem módosítja az olvasásjelzőt w 1 (x) elvégzi a módosítást a saját munkaterületén c 1 hatására megpróbálja véglegesíteni az adatokat x olvasásjelzőjében 2 szerepel az 1-es időbélyegű tranzakció akar módosítani abortálni kell az 1-es tranzakciót, majd újraindítani w 2 (x) is elvégzi a módosítást a saját munkaterületén c 2 hatására megpróbálja véglegesíteni az adatokat az olvasási jelző 2, az írási ennél is kisebb, engedélyezi a módosításokat az írási jelző is felveszi a 2-es értéket 78
Oracle tranzakció-kezelésekezelése alapvetően zároláson alapszik, de megtalálhatóak benne bizonyos TO elemek is csak írási zárolás létezik legnagyobb konkurencia biztosítása végett olvasási művelet sohasem gátol más műveletet olvasást bármikor végre lehet hajtani soha nem várakozik más műveletre más műveletek sem várakoznak miatta az adatbázisban konzisztens adatok vannak csak a lezárt tranzakciók eredményeit tárolja olvasási műveletek mindig konzisztens képet adnak a módosítási utasítások egy közös munkaterületen kerülnek bejegyzésre, véglegesítéskor kerülnek bele a konzisztens adatbázisba 79
Oracle tranzakció-kezelése kezelése II. a közös munkaterületen minden objektum csak egy példányban foglal helyet egyidejűleg csak egy tranzakció módosíthat egy objektumot ST elvek betartása: addig nem enged egy objektumot módosítani, amíg az őt utoljára módosító tranzakció le nem záródik a TM a közös munkaterületen zárolja az objektumokat 80
Oracle zárolás 2PL zárolás nincs olvasási zárolás konkurencia megnövekedése kisebb mértékű biztonság lost update jelenség fenáll hosszú tranzakciónál nagy valószínűséggel megváltozik a konzisztens adatbázis képe más tranzakciók sikeresen lezáródtak hatásai láthatóvá váltak a többiek számára bizonyos esetekben előnyös lenne a tranzakción belüli állandó tartalom olvasása tranzakció szintű olvasási-konzisztencia külön igényelni kell létezik művelet szintű olvasási-konzisztencia (alapért.) 81
Oracle zárolás II. SET TRANSACTION READ ONLY új tranzakció kezdődik tranzakció szintű olvasási-konzisztencia csak olvasási műveleteket enged nagyobb erőforrás ráfordítás SCN mechanizmus 82
SCN mechanizmus olvasási konzisztenciát igénylő végrehajtási egységhez feljegyzésre kerül mikor indult el a konzisztens képbe kerülő elemek, mikor kerületek a konzisztens DB-be ezen időpontjelző az SCN (system change number) időbélyeg jellegű szerepe van egy hosszabb tranzakció alatt több lezárt tranzakció is módosíthatta az érintett blokkot a blokknak több különböző SCN azonosítású példányt is nyílván kell tartani lekérdezés során: az indulási SCN értéknek megfelelő SCN adatblokkokat fogja felhasználni 83
SAVEPOINT sikertelenség esetén a tranzakciókat vissza kell görgetni az utolsó konzisztens állapotig hosszú tranzakciók nagy veszteség tranzakción belül definiálhatunk több savepoint-ot is: SAVEPOINT azonosító a tranzakció a savepoint-ig is visszagörgethető ROLLBACK TO SAVEPOINT azonosító 84
Megjegyzések a zárolásokhoz DDL utasításoknál is figyelembe kell venni szerkezetmódosítás v. törlés csak teljesen szabad táblánál lehetséges a DDL utasítás csak a művelet idejére zárol Példa: több különböző ugyanazt a táblát bővíti PRIMARY KEY szerepel a táblában azonos kulcs felvitele esetén az első megteheti a felvitelt a második várakozik az első sikerességére azután kap hibajelzést, miután az első befejeződött 85
Recovery mechanizmus az adatok konzisztens állapotba való visszaállítása tekintettel kell lenni a korábban elvégzett és lezárt műveletekre az éppen futó tranzakciókra RM szükségessége: tranzakció abortálásakor visszagörgetés váratlan hibaesemény esetén újra felépítés rendszer összeomlás (közös munkaterület elvész) commit-tal lezárt adatmódosítások is elveszhetnek fizikai meghibásodás esetén helyreállítás 86
Oracle recovery SGA DATA ROLLBACK REDO 1. 2. 1212 1435 3. 4. 1212 RS 1212 5. DS 1435 6. COMMIT 7. 8. Adatbázis állomány REDOLOG napló állomány 87
Oracle recovery II. UPDATE auto SET ar=1435 WHERE rsz= RST345 ; COMMIT; Lépések: 1. a rendszer megnézi, hogy a módosítandó objektum benne van-e a memóriában, ha nincs, akkor be kell hozni a megfelelő adatlapot 2. ha benne van, akkor átírható a korábbi értéke az új értékre 3. a módosítás elvégzése előtt az objektum korábbi értéke a ROLLBACK területre mentődik 4. sor kerül a módosításra a memóriában 5. az elvégzett tevékenységeket a rendszer naplózza a REDOLOG területen 6. naplózás után COMMIT, véglegesítődik a tranzakció hatása 1. a ROLLBACK szegmensbeli bejegyzések törlődnek 2. a REDOLOG területre bekerül a COMMIT végrehajtása is 7. a naplóállományba kimentődik a REDOLOG tartalma 8. az adatérték ezután íródik ki aszinkron módon 88
Helyreállítás abortálás esetén tranzakció abortálása esetén: a ROLLBACK szegmens aktuális tranzakcióhoz tartozó bejegyzéseinek végigolvasása az ott letárolt értékeket kell beírni az adatterület megfelelő objektumába ezután a ROLLBACK és a REDOLOG megfelelő bejegyzései törlődnek 89
Helyreállítás rendszerösszeomlás esetén bonyolultabb a helyzet a REDOLOG-ban nemcsak lezárt tranzakcióra vonatkozó bejegyzések vannak később eldönthető melyek záródtak le tartalmaznak COMMIT bejegyzést is visszamentésnél gondolni kell a le nem zárult tranzakciók bejegyzéseire is 90
Helyreállítás rendszerösszeomlás esetén II. 2. 3. SGA DATA ROLLBACK REDO 7b. 4. 5. 1212 1212 RS 1212 6. 1435 DS 1435 7a. COMMIT 8. 1. Adatbázis állomány REDOLOG napló állomány 91
Helyreállítás rendszerösszeomlás esetén III. Lépések: 1. az Oracle sorba veszi azon műveleteket a REDOLOG-ból, melyek hatása még nem került át az adatbázis állományba 1. a naplóállományban minden pontosan le van tárolva, így visszajátszhatóak 2. ha a napló COMMIT-ot is tartalmaz, akkor a tranzakció újra véglegesítődik 3. ha nincs COMMIT, akkor egy ROLLBACK utasítással visszagörgetődik az újrajátszott műveletsor 92
Helyreállítás sérülés esetén a REDOLOG segítségével újrajátszhatóak a tranzakciók nem lehet tetszőlegesen hosszú időre visszamenni a naplóállományban (kapacitása véges) az adatbázis tartalmat is rendszeresen menteni kell ha nincs meg a kívánt rendszerállapot, a helyreállítás nem oldható meg 93