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

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

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

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

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

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

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

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

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

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

Az adatbázisrendszerek világa

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

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

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

Az Oracle rendszer komponensei

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

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

UNDO naplózás. Naplóbejegyzések. Visszaállítási esetek

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

Optimista konkurenciavezérlés

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

Architektúra, megszakítási rendszerek

Tranzakciók az SQL-ben

Rendszerkezelési útmutató

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

... 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.

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

Adatbázis rendszerek megvalósítása 1. Irodalom: Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása

Tranzakciókezelés PL/SQL-ben

FORD Edifact IHS Import

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

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

2 Access 2016 zsebkönyv

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Adatbázis tartalmának módosítása. SQL DML utasítások

SQLServer. Particionálás


Adatbázis rendszerek. dr. Siki Zoltán

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

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

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF. Adatbázisrendszerek előadás november 3.

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

Adatszerkezetek 1. Dr. Iványi Péter

Egyetemi könyvtári nyilvántartó rendszer

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

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Adatbázisok* tulajdonságai

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

Ez a telepítési dokumentum segítséget nyújt abban, hogy szabályosan telepítse az Áfa átállító szoftvert Szerviz 7 programhoz.

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Listák, szótárak, fájlok Listák, szótárak, fájlok

INFORMATIKAI ALAPISMERETEK

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

INFORMATIKAI ALAPISMERETEK

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Biztonsági mentés és visszaállítás Felhasználói útmutató

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

Tematika. Helyreállíthatóság (Failure Recovery) (8. fejezet) Konkurenciavezérlés (Concurrency control) (9. fejezet)

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

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

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

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF. Adatbázisrendszerek előadás november 7.

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

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

Adatmodellezés. 1. Fogalmi modell

Egyetemi könyvtári nyilvántartó rendszer

Számítógépek felépítése

A hazai alállomási irányítástechnika kezdete. Szakmai félnap a debreceni alállomási irányítástechnika üzembehelyezésének 20. évfordulója alkalmából

Szkriptnyelvek. 1. UNIX shell

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

Tájékoztató. Használható segédeszköz: -

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

Adatbázis rendszerek I

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

A TANTÁRGY ADATLAPJA

Szárnyas Gábor (BME) diáinak felhasználásával.

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Adatbázisrendszerek megvalósítása 1

ADATBÁZISOK ADATBÁZIS-KEZELŐ RENDSZEREK. Debrenti Attila

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

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

1. előadás Alapfogalmak Kialakulás, modellezés, a Bachman-féle fogalomrendszer, adatmodell, adatbázis, tulajdonságok

Adatbázisrendszerek (ABR)

INFORMATIKAI ALAPISMERETEK

KOVÁCS BÉLA, MATEMATIKA I.

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

A TANTÁRGY ADATLAPJA

Tájékoztató. Használható segédeszköz: -

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Operációs rendszerek. Elvárások az NTFS-sel szemben

Fájlrendszerek. A Windows operációs rendszerek fájlrendszere

1. előadás: Halmazelmélet, számfogalom, teljes

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Átírás:

12. előadás Tranzakció kezelés és kontroll Adatbázisrendszerek előadás 2016. december 12., és Debreceni Egyetem Informatikai Kar Az előadások Elmasry & Navathe: Database Systems alapján készültek. 12.1

Egyfelhasználós rendszer. Egyidőben legfeljebb egy felhasználó használhatja a rendszert. Többfelhasználós rendszer. Egyidejűleg (konkurens módon) több felhasználó érheti el a rendszert. Konkurencia típusa Összefésült egyszálú feldolgozás. A folyamatok (processzek) konkurens végrehajtása egy CPU-n fésülődik össze. Párhuzamos feldolgozás. A folyamatok (processzek) egyidejűleg (konkurens módon) több CPU-n hajtódnak végre. 12.2

Tranzakció (heurisztikus) Adatbázis folyamatok egy olyan logikai egysége, amely egy vagy több adatbázis-hozzáférési műveletet (olvasás - kinyerés, írás - beszúrás, frissítés, törlés) tartalmaz. Egy tranzakció (műveletek egy halmaza) lehet önálló, melyet egy magas szintű nyelv specifikál (SQL) és interaktív módon hajtunk végre, illetve lehet beágyazva egy programon belül. A tranzakció határai: Begin transaction és End transaction Egy alkalmazói program több, egymástól elkülönülő tranzakciót tartalmazhat, melyeket a fenti határok közé foglalunk be. 12.3

Az adatbázis egyszerű modellje A tranzakció kezelés szempontjából az adatbázis egy egyszerű modelljét használjuk. Az adatbázis nevesített adatelemek egy összessége. Az adatok finomsága (granularitása): az adatok különböző méretű egységei - mező, rekord, egy teljes lemez blokk. (Az ismertetett fogalmak függetlenek a konkrét finomságtól.) Az alapműveletek az olvasás és az írás: read_item(x): beolvassa az X nevű adatbázis elemet egy program változóba. A jelölések egyszerűsítése kedvéért ezt a program változót szintén X-szel jelöljük. write_item(x): kiírja az X program változó értékét az adatbázis X nevű elemébe. Írási és olvasási műveletek jellemzői: az adatátvitel alapegysége a lemezről a számítógép fő memórájába illetve vissza a blokk. Általában egy beolvasandó vagy kiírandó adategység ettől kisebb, egy rekord egy mezője az adatbázisban, bár lehetnek olyan nagyobb egységek is, mint egy rekord vagy akár egy teljes blokk is. 12.4

Írási és olvasási műveletek A read_item(x) utasítás az alábbi lépéseket tartalmazza: Megkeresi az X elemet tartalmazó lemezblokk címét. Átmásolja ezt a lemezblokkot a fő memória pufferébe, (amennyiben ez a blokk nincs már benne valamelyik fő memória pufferben). Átmásolja az X elemet a pufferből az X nevű program változóba. A write_item(x) utasítás az alábbi lépéseket tartalmazza: Megkeresi az X elemet tartalmazó lemezblokk címét. Átmásolja ezt a lemezblokkot a fő memória pufferébe, (amennyiben ez a blokk nincs már benne valamelyik fő memória pufferben). Átmásolja az X elemet az X nevű program változóból a puffer megfelelő területére. Visszamásolja a frissített blokkot a pufferből a lemezre (rögtön vagy egy későbbi időpontban). 12.5

Példa két tranzakcióra T 1 tranzakció read_item(x); X:=X-N; write_item(x); read_item(y); Y:=Y+N; write_item(y); T 2 tranzakció read_item(x); X:=X+M; write_item(x); 12.6

Miért van szükség kontrollra? Az elveszett frissítés problémája. Akkor fordul elő, amikor két tranzakció, amely ugyanazokat az adatbázis elemeket éri el, úgy fésülődik össze, hogy egyes adatbázis elemek hibásakká válnak. Az időleges frissítés (dirty read) problémája. Akkor fordul elő, amikor egy tranzakció frissít egy adatbázis elemet, ami után valamilyen oknál fogva a tranzakció hibásan fejeződik be. Ezt a frissített elemet más tranzakció is eléri mielőtt az még visszaállna az eredeti értékére. A helytelen összegzés problémája. Amikor egy tranzakció rekordok egy összegző függvényét számolja, amíg egy másik tranzakció ezen rekordok közül néhányat frissít. Ekkor az összegző függvény olyan értékekkel számolhat, amelyek még a frissítés előtt vannak, míg mások a frissítés után. 12.7

Az elveszett frissítés problémája Tegyük fel, hogy az alábbi módon fésülődnek össze a T 1 és T 2 tranzakciók. T 1 tranzakció read_item(x); X:=X-N; write_item(x); read_item(y); Y:=Y+N; write_item(y); T 2 tranzakció read_item(x); X:=X+M; write_item(x); Ha a két tranzakciót egymás után hajtjuk végre, akármilyen sorrendben, akkor az X adatbázis elem új értéke X N + M lesz, az Y-é pedig Y + N. Ezzel szemben a fenti összefésülés esetén X + M-t fogja X tartalmazni hiszen T 2, a T 1 módosítása után de még mentés előtt, újra beolvassa X-t a régi értékkel. Így X T 1 általi frissítése ( N) elveszik. (Foglalt helyek száma) 12.8

Az időleges frissítés problémája Tegyük fel, hogy az alábbi módon fésülődnek össze a T 1 és T 2 tranzakciók. T 1 tranzakció read_item(x); X:=X-N; write_item(x); read_item(y); Y:=Y+N; write_item(y); T 2 tranzakció read_item(x); X:=X+M; write_item(x); Ha a rendszerben hiba történik a T 1 tranzakció teljes véglegesítése előtt de még az X adatbázis elem értékét sikerül elmenteni, akkor a T 2 tranzakció hibásan ezzel az értékkel fog dolgozni és nem az eredetivel. Ezért a végeredmény a rossz X N + M érték lesz a jó X + M helyett, amit akkor kapnánk ha visszaállítanánk a T 1 tranzakció előtti állapotot. A T 2 végrehajtásánál az X adatbázis elem beolvasásakor ún. piszkos olvasás történik. 12.9

A helytelen összegzés problémája T 1 tranzakció T 2 tranzakció read_item(x); X:=X-N; write_item(x); read_item(y); Y:=Y+N; write_item(y); sum:=0; read_item(a); sum:=sum+a; read_item(x); sum:=sum+x; read_item(y); sum:=sum+y; A T 2 tranzakció azután olvassa be X-et, hogy N-et már levontunk belőle, míg az előtt olvassa be Y-t, hogy N-et hozzáadtunk volna, az eredmény hibás összegzés lesz. 12.10

Miért van szükség helyreállításra? A helyreállítás (recovery) lehetséges okai: Számítógép hiba (rendszerösszeomlás). Hardver vagy szoftver hiba fordul elő a tranzakció végrehajtásakor. Amennyiben a hardver sérül, úgy a számítógép memóriájában lévő információ elveszhet. Tranzakció vagy rendszer hiba. Bizonyos műveletek a tranzakcióban hibát eredményezhetnek, pl. nullával való osztás vagy egész túlcsordulás. Tranzakció hiba fordulhat még elő hibás paraméter értéknél programozói hiba esetén. Emellett a felhasználó is megszakíthatja a tranzakciót. Lokális hibát vagy kivételt észlel a tranzakció. Bizonyos esetekben szükség lehet a tranzakció törlésére, pl. az adatok nem állnak rendelkezésre, vagy nincs elégséges fedezet egy adott összeg lehívására egy banki rendszerben. 12.11

Miért van szükség helyreállításra? A helyreállítás (recovery) lehetséges okai: Konkurencia kontrol kikényszerítés. A kontrol dönthet a tranzakció megszakítása mellett és később újraindíthatja azt. Ennek oka lehet a szerializálhatóság követelménye (ld. később), vagy mert több tranzakció deadlock (holtpont) állapotban van. Lemezhiba. A lemez egyes blokkjai elvesztették az adataikat. Ennek oka lehet pl. az író-olvasó fej megsérülése, ami a tranzakció írása vagy olvasása kapcsán egyaránt előfordulhat. Fizikai, katasztrófák. Végtelen listája olyan nak, mint a légkondicionáló hibája, tűz, szabotázs, a lemez túlírása, vagy rossz lemez felmountolása az operátor által. 12.12

Definíció A tranzakció egy végrehajtás alatt álló program, amely az adatbázis-feldolgozás egy logikai egységét alkotja. Egy tranzakció egy vagy több adatbázis-hozzáférési műveletből (beszúrás, törlés, módosítás és lekérdezés) áll. A tranzakciót alkotó adatbázis-műveletek vagy egy alkalmazói programba vannak beágyazva, vagy interaktívan is megadhatók egy magas szintű lekérdező nyelv (például SQL) segítségével. A tranzakció határait megadhatjuk az explicit begin transaction és end transaction utasításokkal egy alkalmazói programban, ebben az esetben a két utasítás között elhelyezkedő összes adatbázis-hozzáférési művelet egy tranzakciót alkot. Egy alkalmazói program egynél több tranzakciót is tartalmazhat, ha több tranzakcióelhatároló utasítás szerepel benne. Ha a tranzakciót alkotó adatbázis-műveletek nem módosítják az adatbázist, csak lekérdezik azt, akkor a tranzakciót read-only tranzakciónak nevezzük. 12.13

A tranzakció állapotai és műveletei Állapotok aktív állapot részlegesen véglegesített állapot véglegesített (commit) állapot hibás állapot megszakított állapot Műveletek begin_transaction read vagy write end_transaction commit_transaction rollback vagy abort A visszaállítás során az alábbi műveletek használhatóak undo hasonló a rollback-hez azt kivéve, hogy elemibb művelet minthogy egy egész tranzakcióra vonatkozna redo bizonyos tranzakció műveleteket újra végrehajt a biztonság kedvéért 12.14

A tranzakció végrehajtás folyamatábrája ide jön egy ábra 12.15

A log vagy napló-fájl. A log nyomon követi az összes olyan tranzakció műveletet, amely hatással van az adatbázis elemeire. Ez az információ szükséges lehet a visszaállítás engedélyezésére hibás tranzakció esetén. A log a lemezen van, ezért immunis minden hibatípusra kivéve a lemezhibákat és katasztrófákat. A log-ot periódikusan archiválni kell (pl. szalagon) a fenti katasztrófák kijavítására. A log-rekordok típusai: [start_transaction,t], [write_item, T,old_value,new_value], [read_item,t,x], [commit,t], [abort,t], ahol T egy egyértelmű tranzakció azonosító. Azok a helyreállító protokollok, amelyek elkerülik a kaszkádolt (lépcsős) rollback-et, nem igénylik a read műveletet a log-ban, míg mások igen. Erős protokollok egyszerűbb write bejegyzéseket igényelnek, amelyek nem tartalmazzák a new_value-t. 12.16

a rendszer loggal Ha a rendszer összeomlik, akkor helyreállíthatjuk konzisztens adatbázis állapotba a log vizsgálatával megfelelő módszerek révén. Mivel a log minden olyan írási műveletről tartalmaz egy rekordot, amely megváltoztatja valamelyik adatbázis elem értékét, az undo segítségével lehetséges egy tranzakció írási műveletei hatásának visszaállítása úgy, hogy az összes érintett adatbázis elem értékét az írási művelet log-bejegyzésebeli old_value értékére állítjuk vissza. Szintén használhatjuk a redo-t arra, hogy kikényszerítsük az írási műveletek hatását minden a tranzakcióban érintett adatbázis elem értékének a log-bejegyzésbeli megfelelő new_value-re való állításával. 12.17

Commit és Rollback Definíció Egy tranzakció akkor éri el a véglegesítési (commit) pontját, ha az összes adatbázis-hozzáférési művelete sikeresen végrehajtódott és ezen műveletek hatása kiírásra került a log-fájlba. A véglegesítési pontja után a tranzakciót véglegesítettnek nevezzük és feltételezzük, hogy összes hatása állandó bejegyzésre került az adatbázisban. A tranzakció ezután egy [commit,t] bejegyzést tesz a log-ba. Tranzakciók visszavonása (rollback): azon tranzakcióknál szükséges, amelyeknél van [start_transaction,t] bejegyzés a log-ban, azonban nincs [commit,t] bejegyzés. 12.18

1 Atomosság (atomicity): A tranzakció a feldolgozás atomi egysége; vagy teljes egészében végrehajtódik, vagy egyáltalán nem. 2 Konzisztenciamegőrzés (consistency preservation): Egy tranzakció konzisztenciamegőrző, ha teljes és önálló végrehajtása az adatbázist konzisztens állapotból konzisztens állapotba viszi át. 3 Elkülönítés (isolation): Egy tranzakciónak látszólag más tranzakcióktól elkülönítve kell végrehajtódnia. Ez azt jelenti, hogy a tranzakció végrehajtása nem állhat kölcsönhatásban semelyik másik konkurensen végrehajtott tranzakcióval sem. 4 Tartósság vagy állandóság (durability vagy permanency): Egy véglegesített tranzakció által az adatbázison véghezvitt módosításoknak meg kell őrződniük az adatbázisban. Ezeknek a módosításoknak semmilyen hiba miatt nem szabad elveszniük. Az biztosításáért a DBMS vezérlő és naplózó/helyreállító alrendszerei a felelősek. 12.19

Visszaállíthatóságon alapuló ütemezés Tranzakció ütemezés (schedule vagy history) A különböző n lévő műveletek sorrendje, amikor a tranzakciókat összefésülve egy szálon hajtjuk végre. Az ütemezés a tranzakció műveletek egy olyan sorrendje, amely megfelel az egyenkénti tranzakcióbeli sorrendnek, azaz ha két, egyazon tranzakcióbeli műveletnél az egyik megelőzi a másikat, úgy ez a sorrend megmarad az összefésülés után is. Típusok Visszaállítható ütemezés. Amikor egyetlen egy olyan T tranzakció sem véglegesítődik addig, amíg nem véglegesítődik minden olyan T tranzakció, amely olyan elemet ír ki, amelyet T beolvas. Ekkor egyetlen tranzakciót sem szükséges visszaállítani. Kaszkádmentes ütemezés. Amikor minden tranzakció csak olyan adatbázis elemet olvas be, amelyet egy már elfogadott tranzakció írt ki. 12.20

Szerializálhatóságon alapuló ütemezés Szeriális ütemezés Egy S ütemezést szeriálisnak nevezünk, ha minden ütemezésbeli T tranzakcióra fennáll, hogy az összes T -beli művelet közvetlenül egymás után hajtódik végre az ütemezésben. Szerializálható ütemezés Egy S ütemezés szerializálható, ha ekvivalens ugyanazon tarnzakciók egy szeriális ütemezésével. Eredmény ekvivalens ütemezés. Amikor a két ütemezés ugyanazt a végső adatbázis állapotot eredményezi. Konfliktus ekvivalens ütemezés. Amikor a két ütemezésben bármely két konfliktusos művelet (pl. ugyanazt az adatbázis elemet akarja felülírni két tranzakció) sorrendje ugyanaz. Konfliktus szerializálható ütemezés. Amikor az ütemezés konfliktus ekvivalens egy szeriális ütemezéssel. 12.21

Megjegyzések a szerializálhatóságról 1 A szerializálhatóság nem jelenti azt, hogy az ütemezés maga szeriális. 2 A szerializálhatóságból következik, hogy az ütemezés helyes. Ez azt jelenti, hogy az adatbázis konzisztens állapotban marad a tranzakciók végrehajtása után. 3 A szerializálhatóságot nehéz ellenőrizni, mivel nem könnyű előre meghatározni, hogy egy ütemező hogyan fésüli össze a műveleteket. 4 A gyakorlatban protokollokat használnak a szerializálhatóság biztosítására. 5 Egy ütemezés kezdete és vége nem meghatározható, ezért a teljes ütemezés ellenőrzését a véglegesített tranzakciókbeli műveletek ellenőrzésére redukálják. 6 A gyakorlatban a legtöbb DBMS-ben a kétfázisú zárolást (two phase locking) használják. 7 Egy gyengébb ekvivalencia ütemezések között az ún. nézet (view) ekvivalencia, melyet itt nem tárgyalunk. 8 Van algoritmus a konfliktus szerializálhatóság ellenőrzésére, amely a precedencia gráfon alapszik. 12.22

A kontroll Célja Az elkülönítés kikényszerítése (pl. teljes kizárással) a konfliktusos tranzakciók között. Az adatbázis konzisztenciájának megőrzése a tranzakciók konzisztencia megőrző végrehajtása révén. Az olvasás-írás és írás-írás konfliktusok feloldása. Példa Ha egy konkurens végrehajtási környezetben a T 1 konfliktusba kerül a T 2 -vel az A adatelem miatt, akkor a létező kontroll dönt arról, ha T 1 -nek vagy T 2 -nek szüksége van A-ra, illetve ha más tranzakciókat vissza kell állítani vagy várakoztatni kell. 12.23

A kétfázisú zárolás módszere Két művelet: Lock(X) és Unlock(X) az X adatbázis elemen. A zárolás (Lock) művelet biztosítja az engedélyt (a) olvasásra, (b) egy adatelem írására egy tranzakció által. A feloldás (Unlock) művelet törli ezeket az engedélyeket az adatelemről. A két művelet atomi művelet. Két zárolási mód: (a) megosztás (shared lock) és (b) kizárás (write lock). Megosztás esetén egynél több ilyet jegyezhetünk be egy adatbázis elemre olvasás céljából, azonban ekkor kizárást már nem jegyezhetünk be semmilyen tranzakció által. Csak egy kizárás jegyezhető be egy adatbázis elemre egy időben és ekkor egyetlen tranzakció sem jegyezhet be megosztást erre az adatbázis elemre. A Lock Manager menedzseli a zárolásokat az adatelemeken egy zárolási tábla (lock table) segítségével tartva ezeket nyilván. 12.24