Hasonló dokumentumok
B I T M A N B I v: T M A N

Adatbázis Rendszerek II. 10. Tranzakció kezelés 72/1B IT MAN

Adatbázisok II Jánosi-Rancz Katalin Tünde 327A 1-1

Optimista konkurenciavezérlés

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

Tranzakciókezelés PL/SQL-ben

Az Oracle rendszer komponensei

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázisok elmélete 24. előadás

Ellenőrző kérdések. 5. Kis dolgozat kérdései. (9-10. előadás)

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Tranzakciók, nézettáblák, indexek. Párhuzamos folyamatok irányítása Virtuális és materializált nézettáblák Az adathozzáférés felgyorsítása

Az adatbázisrendszerek világa

Tranzakciók az SQL-ben

Adatbázisrendszerek 9. előadás: Tranzakciók és konkurencia

Adatbázisok elmélete 24. előadás

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

12. előadás. Tranzakció kezelés és konkurencia kontroll. Adatbázisrendszerek előadás december 12.

SQL DDL-2 (aktív elemek) triggerek

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Adatbázisok* tulajdonságai

Adatbázisok elmélete 18. előadás

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

B I T M A N B I v: T M A N

Adatbázis rendszerek I

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

Adatbázisok elmélete

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok


Csima Judit szeptember 6.

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

Adatbáziskezelés. Indexek, normalizálás NZS 1

Címkék és ágak kezelése i. Címkék és ágak kezelése

Adatbázisok elmélete 21. előadás

Adatbázisok elmélete 1. előadás

Adatbázisok elmélete 18. előadás

Adatbázis, adatbázis-kezelő

B I T M A N B I v: T M A N

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Elosztott adatfeldolgozás

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Adatbázisok elmélete 1. előadás

Adatbázis-kezelés. Harmadik előadás

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

Informatika szigorlat 9-es tétel: Az adatbázis-kezelő rendszerek fogalmai

Java és web programozás

Adatbázis kezelés Delphiben. SQL lekérdezések

SQLServer. Particionálás

Adatbázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Angol szótár V

Adatbázis használat I. 5. gyakorlat

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

SQL DDL-1: táblák és megszorítások

Bevezetés: az SQL-be

N Y I L A T K O Z A T

ADATBÁZISKEZELÉS ADATBÁZIS

Operációs rendszerek be és kivitelkezelése, holtpont fogalma, kialakulásának feltételei, holtpontkezelési stratégiák, bankár algoritmus.

Java és web programozás

S04-2 Elosztott alkalmazások készítése

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

Szinkronizálás. 9. előadás

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adat és folyamat modellek

PwC EKAER Tool felhasználói leírás május

Adatbázisok elmélete 12. előadás

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatmodellek. 2. rész

Java programozási nyelv 9. rész Kivételkezelés

ADATBÁZISOK, ADATTÁRHÁZAK

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád

Szállítmánytömeg kezelői megosztása

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázisok biztonsága

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Rekurzió. Dr. Iványi Péter

Temporális adatbázisok. Kunok Balázs szakdolgozata alapján

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

számított mező, számított tétel

Tranzakció, mint a helyreállítás egysége

Folyamatos teljesítésű számlák tömeges generálása időszakonként, egyedi tételek kezelésének lehetőségével

2MU09f_Konkvez_feladatok.pdf Feladatok a tranzakciókezelésbıl

Képzési projektterv felvétele Képző Szervezetek részére Kitöltési útmutató

A TANTÁRGY ADATLAPJA

Az elektronikus pályázati űrlap (eform) érvényesítése és benyújtása

Csima Judit október 24.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Adatbázis rendszerek SQL nyomkövetés

Operációs rendszerek. Holtpont

Átírás:

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