Download presentation
Presentation is loading. Please wait.
1
Controlul Concurenţei în Baze de Date
Sisteme de Operare Avanasate Ştefănescu Cristina IISC
2
1. Introducere Baza de date: O colecţie partajată de date, între care există relaţii logice, proiectată pentru a satisface necesităţile informaţionale ale unei organizaţii. SGBD: Un sistem de programe care permite utilizatorului definirea, crearea şi întreţinerea bazei de date si accesul controlat la aceasta. SQL (Structured Query Language) este în prezent, unul din cele mai puternice limbaje structurate pentru interogarea bazelor de date relaţionale; este un limbaj neprocedural şi declarativ, deoarece utilizatorul descrie ce date vrea să obţină, fără a fi nevoie să stabilească modalităţile de a ajunge la datele respective.
3
1. Introducere Principalele declaraţii din limbajul SQL folosite pentru o aplicaţie sunt: SELECT Data retrieval INSERT UPDATE Data Manipulation Language (DML) DELETE CREATE ALTER DROP Data Definition Language (DDL) RENAME TRUNCATE COMMIT ROLLBACK Transaction Control SAVEPOINT GRANT REVOKE Data Control Language (DCL)
4
2. Gestiunea Tranzacţiilor
Tranzacţiile sunt unităţi de execuţie care garantează consistenţa şi siguranţa bazei de date. Pentru aceasta orice tranzacţie trebuie să satisfacă un set de patru condiţii sintetizate în literatura de specialitate prin acronimul ACID: Atomicitatea - o tranzacţie este considerată o unitate elementară de prelucrare Consistenţa - satisfacerea tuturor constrângerilor de integritate, explicite sau implicite(unicitatea cheilor primare, integritatea referenţială, etc.) Izolarea - o tranzacţie are acces doar la stările consistente ale bazei de date Durabilitatea - odată tranzacţia validată, rezultatele sale devin permanente şi sunt înscrise în baza de date
5
2. Gestiunea Tranzacţiilor
COMMIT permanentizează schimbările din tranzacţia curentă şterge toate punctele de salvare (savepoint) din tranzacţie termină tranzacţia eliberează toate blocările (Lock) tranzacţiei SAVE POINT utilizat pentru a împărţi o tranzacţie în bucăţi mai mici permite utilizatorului să reţină toată munca sa la orice moment din timp, cu opţiunea de a înregistra mai târziu totul, a anula totul sau o parte din ea. ROLLBACK anulează modificările din tranzacţia curentă se şterg toate punctele de salvare din tranzacţie se eliberează blocările tranzacţiei
6
3. Controlul Concurenţei
Procesarea tranzacţiilor se referă doar la două aspecte: Recuperarea bazei de date după un incident (database recovery) - se bazează pe inducerea unui anumit nivel de redundanţă prin memorarea istoriei tranzacţiilor într-un aşa-numit "jurnal" (log). Controlul interferenţelor care pot avea loc între tranzacţiile care se execută în mod concurent (concurrency control) - este vorba despre "controlul" (şi nu neapărat "evitarea") interferenţelor deoarece, deşi întotdeauna nedorite, aceste interferenţe pot fi permise - în anumite forme bine precizate - pentru a creşte performanţele sistemului.
7
3. Controlul Concurenţei - exemplu
Momentul de timp Tranzacţia 1 Tranzacţia 2 A în baza de date T1 READ A 10 T2 T3 A=A-1 T4 T5 WRITE A 9 T6
8
3. Controlul Concurenţei - exemplu
Momentul de timp Tranzacţia 1 Tranzacţia 2 A în baza de date T1 READ A 10 T2 T3 A=A-1 T4 A=A+1 T5 WRITE A 9 T6 11 T7 A=A-2 T8 WRITE A 7
9
3.1. Blocare o tranzacţie care a început să opereze asupra unor date trebuie să interzică accesul altor tranzacţii la datele respective până în momentul în care operaţia se încheie această modalitate de blocare este prea restrictivă: Blocare partajată (share lock sau S lock) - Permite citirea obiectului dar interzice modificarea acestuia -"blocare pentru citire" (read lock). Mai multe tranzacţii pot bloca simultan pentru citire un anumit obiect. Blocare exclusivă (exclusive lock sau X lock) - Interzice accesul altor tranzacţii la obiectul blocat, fie pentru citire, fie pentru modificare. Blocarea exclusivă este mai "tare" decât blocarea partajată, fiind folosită doar pentru actualizări -"blocare pentru scriere" (write lock).
10
3.2 Deadlock Momentul T1 Momentul T2 Momentul T3
tranzacţia R1 solicită o blocare partajată a liniei Z şi (presupunând că linia nu era blocată pentru scriere de o altă tranzacţie) o obţine. Momentul T2 tranzacţia R2 solicită şi ea o blocare partajată a liniei Z şi o obţine la rândul ei; ambele tranzacţii blochează în acest moment pentru citire linia Z. Momentul T3 R1 solicită blocarea exclusivă a liniei Z, pentru a face o actualizare; nu obţine blocarea, deoarece linia este blocată pentru citire de tranzacţia R2, deci este pusă în stare de aşteptare; R2 cere şi ea blocarea exclusivă şi, evident, nu o obţine din motive similare.
11
3.2 Deadlock În cazul prezentat niciuna dintre tranzacţii nu poate continua, deoarece fiecare aşteaptă ca cealaltă să elibereze linia Z=>deadlock sau "interblocare". Prevenirea interblocării implică stabilirea unui protocol de acces la date care să facă imposibilă apariţia situaţiilor de deadlock Detectarea interblocării - mecanism de time- out(dacă durata execuţiei unei tranzacţii depăşeşte o valoare prestabilită, sistemul deduce că a apărut o interblocare) sau construirea şi menţinerea dinamică a unui "graf de aşteptare"
12
3.3 Serializare Dacă se presupune că fiecare tranzacţie în parte din grup este corectă, atunci orice planificare serială a tranzacţiilor (una după alta, indiferent de ordine) este corectă. Oricare ar fi două tranzacţii A şi B dintr-o planificare a unui grup de tranzacţii concurente, fie A precede logic pe B, fie B precede logic pe A. Faptul că "A precede logic pe B" înseamnă că B poate vedea rezultatele execuţiei tranzacţiei A. Deci, dacă considerăm toate obiectele văzute de tranzacţia A, atunci B vede toate aceste obiecte fie modificate deja de A, fie în forma în care erau înainte ca modificările să se producă, dar niciodată ca un amestec de obiecte modificate şi obiecte nemodificate.
13
3.4 BLOCAREA IERARHICĂ Pentru o obţine o blocare la nivel de articol (linie de tabelă), o tranzacţie trebuie să-şi manifeste această intenţie, cerând mai întâi o blocare la nivel de tabelă. Introduce trei noi tipuri de blocare: IS - intent shared : Tranzacţia T intenţionează să blocheze pentru citire (S lock) anumite linii ale tabelei R, pentru a garanta stabilitatea acestora în timpul procesărilor pe care le va efectua. IX - intent exclusive : La fel ca IS, dar T s-ar putea să vrea să modifice anumite articole şi deci să solicite blocarea exclusivă a acestora. S – shared : Este obişnuita blocare partajată. T admite citiri concurente ale tabelei R, dar nu şi scrieri. T nu va face nici o scriere la nivelul liniilor tabelei. SIX - shared intent exclusive : Combină S şi IX. În plus faţă de S, T s-ar putea să vrea să modifice anumite linii din R şi, în consecinţă, să solicite blocarea exclusivă a acestora. X – exclusive : T nu admite citiri concurente în tabela R. T ar putea să actualizeze anumite linii ale tabelei R.
14
3.4 BLOCAREA IERARHICĂ Protocolul bazat pe intenţii de blocare (intent locking protocol), impune două reguli care îmbină blocările la nivel de tabelă şi de articol într-o combinaţie care adesea s-a dovedit mai eficientă în aplicatii: Înainte de a obţine o blocare partajată (S) la nivel de linie, o tranzacţie trebuie să obţină o blocare de tip IS (sau mai tare) la nivelul întregii tabele. Înainte de a obţine o blocare de tip exclusiv (X) la nivel de linie, o tranzacţie trebuie să obtină o blocare de tip IX sau mai tare la nivelul întregii tabele.
15
4. Algoritmi de control al concurenţei în bazele de date centralizate
Algoritmi de control al concurentei prin blocare – care se bazează pe accesul mutual exclusiv al tranzacţiilor la datele partajate; excluderea mutuala este asigurăta prin primitive de tip LOCK şi UNLOCK. Algoritmi de control al concurentei prin marci de timp – care încearcă să ordoneze execuţa tranzacţiilor conform unui set de reguli; ordonarea tranzacţiilor este asigurătă prin marci de timp asociate atât tranzacţiilor, cât şi datelor pe care le acceseaza.
16
4.1. Algoritmi de control al concurentei prin blocare – 2PL
Toate operaţiile de blocare trebuie să preceadă prima operaţie de deblocare. faza de creştere (growing phase), în care se pot face noi blocări, dar nu se fac deblocări; faza de descreştere (shrinking phase), în care se fac toate deblocările, dar nu se mai pot face blocări noi; Dacă fiecare tranzacţie a unei planificări respectă protocolul de blocare în două faze, atunci planificarea este serializabilă. Protocolul de blocare strictă în două faze implică eliberarea toturor articolelor blocate la sfarşitul tranzacţiei
17
4.1. Algoritmi de control al concurentei prin blocare – 2PL
T | T2 LOCK A LOCK B READ A WRITE A UNLOCK A READ B WRITE B ROLLBACK T1=> ROLLBACK şi pentru T2 care citeşte date scrise de T1 =>planificare cu rollback în cascadă =>necesitatea 2PL strict
18
4.2. Algoritmi de control al concurenţei prin marcare
Eficient pentru o posibilitate a apariţiei unui conflict redusă;timpul pierdut prin suspendarea şi reluarea unor tranzacţii e mult mai mic decat timpii necesari pentru lansarea cererilor de blocare şi pentru aşteptarea acceptării cererilor. Marca de timp (timestamp) – este o valoare care asigura unicitatea si ordonarea cronologica a unui set de resurse. Marca de timp poate să fie o valoare care se incrementează automat la asocierea unei mărci de timp unei noi tranzacţii sau poate fi generată din timpul curent al sistemului.
19
4.2. Algoritmi de control al concurenţei prin marcare
20
Bibliografie Mircea Sârbu, O privire asupra "dedesubturilor" bazelor de date: mecanismele tranzacţionale ,publicat în: PC Report 60 - septembrie 1997; Andreea Navroschi-Szász, curs: Blocări, mărci de timp şi utilizarea lor in Oracle Bâscă O., Baze de date, Editura BIC ALL, Timişoara, 1997 Dollinger R., Baze de date şi gestiunea tranzacţiilor, Editura Albastră, Cluj-Napoca, 1999.
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.