190 likes | 298 Views
Adatbázis rendszerek II. Kovács László. A tranzakció-kezelés gyakorlati elemei. r 1 (x). r 1 (x). w 1 (x). c 1. r 2 (x). r 2 (x). w 2 (x). c 2. r 1 (x). r 1 (x). w 1 (x). w 1 (x). c 1. c 1. r 2 (x). r 2 (x). w 2 (x). w 2 (x). c 2. c 2. Helyes zárolás. Helyes zárolás:
E N D
Adatbázis rendszerek II Kovács László A tranzakció-kezelés gyakorlati elemei
r1(x) r1(x) w1(x) c1 r2(x) r2(x) w2(x) c2 r1(x) r1(x) w1(x) w1(x) c1 c1 r2(x) r2(x) w2(x) w2(x) c2 c2 Helyes 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 R/W R/W/U
SQL tranzakció kezelés Az SQL szabvány nem foglalkozik az izoláció belső implementációjával Csak a tranzakció kezelési keretek határozza meg SET TRANSACTION mód START TRANSACTION mód SAVEPOINT név RELEASE SAVEPOINT név COMMIT mód ROLLBACK mód TO SAVEPOINT
Oracle zárolási mechanizmusa Alapesetben nem a helyes zárolást követi hatékonysági megfontolásból - nincs olvasási zárolás - olvasás mindig elvégezhető - csak az írás zárol - alapeset a rekordszint - nincs piszkos olvasás - konzisztens értéket olvas - a REPETABLE READ szint is megvalósítható DBMS DB w(x=5) Kliens A X=5 r(x) Kliens B X=4 r(x)
Naplózási mechanizmus A TM-nek gondoskodni kell az induló állapotok megőrzéséről Naplózás: a parancsok és induló értékek feljegyzése, szükség szerinti helyreállítás céljából DBMS MEMORY DB-C ROLLBACK LOG REDO-LOG aktuális állapot induló értékek elvégzett műveletek x=15 w(x) x=5 x=15 x=5 DATABASE w(x) REDO-LOG
VFP zárolás zárolás kézi automatikus rekord tábla nem bufferelt bufferelt A finomság függ a művelettől
VFP zárolás Zárolási parancsok: USE tábla EXLUSIVE | SHARED FLOCK() RLOCK() CURSORSETPROP() CURSORGETPROP() BEGIN TRANSACTION END TRANSACTION ROLLBACK DB Kliens A Kliens B
KÉP Salvador Dali (1094-1989):
SQL tranzakció-kezelés Egyes RDBMS-ek különböző izolációs szinten tudnak működni Tranzakció explicit indítása az igényelt üzemmódban: START TRANSACTION mód a megadható üzemmódok: ISOLATION LEVEL szint | elérési mód | DIAGNOSTICS SIZE méret READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE n READ ONLY READ WRITE
SQL tranzakció-kezelés Tranzakció implicit indításakor az üzemmód kijelölés: SET TRANSACTION mód A hosszabb tranzakció szeletekre bontható a visszagörgetés szempontjából SAVEPOINT név RELEASE SAVEPOINT név ROLLBACK TO SAVEPOINT név SAVEPOINT 1 SAVEPOINT 2 SAVEPOINT 3 start ROLLBACK TO SAVEPOINT 2 törlődnek!
Oracle zárolás rekord szintű tábla szintű csak az írási művelet zárol Zárolási szintek: DML DDL olvasás az utolsó konzisztens képet adja vissza Zárolási jelleg: LOCK TABLE tábla IN mód EXCLUSIVE MODE SHARE MODE … Az INSERT, UPDATE, DELETE utasítások rekord szintű, EXCLUSIVE zárolást használnak
Oracle zárolás Ismételhető olvasás (REPEATABLE READ) izolációs szintjének megvalósítása SET TRANSACTION READONLY A rendszer megőrzi az induláskori adatbuffer állapotokat SCN: belső időbélyeg, a blokkot író tranzakció sorszáma SCN = 1 SCN = 2 SCN = 3 SCN = 4 SCN = 5 1 2 2 2 2 4 4 SET T. READONLY UPDATE UPDATE UPDATE
VFP zárolás A lokális táblákhoz való hozzáférés több szinten szabályozható Kizárólagos Osztott Nyitási módok: USE tába … EXLUSIVE | SHARED SET EXLUSIVE ON | OFF ISEXLUSIVE() A megnyitási mód kiterjed a DBC, SCX, FRX állományokra is
VFP zárolás Közvetlen, kézi zárolás is lehetséges rekord tábla zárolás: RLOCK(n) FLOCK(n) az alkalmazási kód tartalmazza a zárolási kódrészleteket nem biztonságos UNLOCK(n) SET REPROCESS TO n ISRLOCKED()
VFP zárolás Lehetőség van tranzakció kezelésre is SET MULTILOCKS ON BEGIN TRANSACTION END TRANSACTION ROLLBACK A VFP-motor a tranzakció végrehajtásánál: - belső adatbuffereket hoz létre - induló állapotokat feljegyez - zárolásokat kezeli A három módszer együtt is használható
Specifikus zárolási módok Zárolások felmínősítése: menet közben egy zárolási szintből magasabb szint lesz, ekkor deadlock alakulhat ki ls1(x) r1(x) …lx1(x) w1(x) u1(x) ls2(x) r2(x) …lx2(x) w2(x) u2(x) Módosítási zárolás: az objektum most csak olvasott, de később írás következik majd Kompatibilitás: lu nem enged meg már más zárolást lu1(x) r1(x) …lx1(x) w1(x) u1(x) lu2(x) r2(x) …lx2(x) w2(x) u2(x)
kép Salvador Dali. A nárcisz metamorfózisa
Tranzakció-kezelés speciális elemei • Többszintű tranzakciók • Elosztott tranzakciók • - 2PC protokoll • - VFP GETCURSORPROP • - VFP SETCURSORPROP • - TO ütemezés • TO szabályok • SGT módszer