Managementul tranzacțiilor în DBMS: Ce sunt proprietățile ACID?

Ce este o tranzacție cu baze de date?

A Tranzacție cu baze de date este o unitate logică de procesare într-un SGBD care implică una sau mai multe operațiuni de acces la baza de date. Pe scurt, tranzacțiile cu bazele de date reprezintă evenimente din lumea reală ale oricărei întreprinderi.

Toate tipurile de operațiuni de acces la baza de date care sunt ținute între declarațiile de început și de sfârșit ale tranzacției sunt considerate ca o singură tranzacție logică în DBMS. În timpul tranzacției, baza de date este inconsecventă. Doar odată ce baza de date este confirmată, starea este schimbată de la o stare consistentă la alta.

Tranzacție cu baze de date
Tranzacție cu baze de date

Fapte despre tranzacțiile cu baze de date

  • O tranzacție este o unitate de program a cărei execuție poate sau nu modifica conținutul unei baze de date.
  • Conceptul de tranzacție în DBMS este executat ca o singură unitate.
  • Dacă operațiunile bazei de date nu actualizează baza de date, ci doar preiau date, acest tip de tranzacție se numește tranzacție numai în citire.
  • O tranzacție reușită poate schimba baza de date de la o STARE CONSISTENT la alta
  • Tranzacțiile DBMS trebuie să fie atomice, consistente, izolate și durabile
  • Dacă baza de date ar fi într-o stare inconsistentă înainte de tranzacție, aceasta ar rămâne în starea inconsecventă după tranzacție.

De ce aveți nevoie de concurență în Tranzacții?

O bază de date este o resursă partajată accesată. Este folosit de mulți utilizatori și procese simultan. De exemplu, sistemul bancar, sistemele de rezervări feroviare și aeriene, monitorizarea pieței de valori, inventarul supermarketurilor și casele etc.

Negestionarea accesului concurent poate crea probleme precum:

  • Eroare hardware și blocări ale sistemului
  • Executarea concomitentă a aceleiași tranzacții, impas, sau performanță lentă

State ale Tranzacțiilor

Diferitele stări ale unui concept de tranzacție în DBMS sunt enumerate mai jos:

Stat Tipuri de tranzacții
Stare activă O tranzacție intră într-o stare activă când începe procesul de execuție. În această stare pot fi efectuate operații de citire sau scriere.
Parțial angajat O tranzacție intră în starea parțial angajată după încheierea unei tranzacții.
Stat comis Când tranzacția este confirmată, aceasta și-a încheiat deja execuția cu succes. În plus, toate modificările sale sunt înregistrate în baza de date în mod permanent.
Stat eșuat O tranzacție consideră că a eșuat atunci când oricare dintre verificări eșuează sau dacă tranzacția este întreruptă în timp ce este în stare activă.
Stat terminat Starea tranzacției ajunge la starea încheiată atunci când anumite tranzacții care părăsesc sistemul nu pot fi repornite.
Diagrama de tranziție a stărilor
Diagrama de tranziție de stat pentru o tranzacție de bază de date

Să studiem a diagrama de tranziție a stărilor care evidențiază modul în care o tranzacție se mișcă între aceste diferite state.

  1. Odată ce o tranzacție stabilește execuția, aceasta devine activă. Poate emite operația de CITIRE sau SCRIERE.
  2. Odată ce operațiunile READ și WRITE sunt finalizate, tranzacțiile devin parțial comite stare.
  3. În continuare, unele protocoale de recuperare trebuie să se asigure că o defecțiune a sistemului nu va duce la incapacitatea de a înregistra permanent modificările tranzacției. Dacă această verificare este un succes, tranzacția se comite și intră în starea comisă.
  4. Dacă verificarea a eșuat, tranzacția trece în starea Eșuată.
  5. Dacă tranzacția este întreruptă în timp ce se află în starea activă, aceasta trece în starea eșuată. Tranzacția ar trebui să fie anulată înapoi pentru a anula efectul operațiunilor sale de scriere asupra bazei de date.
  6. Starea încheiată se referă la tranzacția care părăsește sistemul.

Care sunt proprietățile ACID?

Proprietățile ACIDE sunt utilizate pentru menținerea integrității bazei de date în timpul procesării tranzacțiilor. ACID în DBMS înseamnă Atomicitate, Cpersistenta, Isolare, și Durabilitate.

  • Atomicity: O tranzacție este o singură unitate de operare. Fie îl executați în întregime, fie nu îl executați deloc. Nu poate exista execuție parțială.
  • Coerența: Odată ce tranzacția este executată, aceasta ar trebui să treacă de la o stare consistentă la alta.
  • Izolare: Tranzacția ar trebui să fie executată izolat de alte tranzacții (fără blocări). În timpul executării tranzacțiilor concomitente, rezultatele tranzacțiilor intermediare din tranzacțiile executate simultan nu ar trebui să fie puse la dispoziție unul altuia. (Nivel 0,1,2,3)
  • Durabilitate:· După finalizarea cu succes a unei tranzacții, modificările din baza de date ar trebui să persistă. Chiar și în cazul defecțiunilor sistemului.

Proprietatea ACID în DBMS cu exemplu

Mai jos este un exemplu de proprietate ACID în DBMS:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

Tranzacția 1 transferă 50 USD din contul X în contul Y.

Tranzacția 2 creditează fiecare cont cu o dobândă de 10%.

Dacă ambele tranzacții sunt transmise împreună, nu există nicio garanție că Tranzacția 1 se va executa înainte de Tranzacția 2 sau invers. Indiferent de comandă, rezultatul trebuie să fie ca și cum tranzacțiile au loc în serie una după alta.

Tipuri de tranzacții

Pe baza zonelor de aplicare

  • Nedistribuit vs. distribuit
  • Tranzacții compensatoare
  • Timpul tranzacțiilor
  • On-line vs lot

Bazat pe Acțiuni

  • Doi pasi
  • restrâns
  • Model de acțiune

Bazat pe Structură

  • Tranzacții simple sau simple: constă dintr-o secvență de operații primitive executate între operațiunile de început și de sfârșit.
  • Tranzacții imbricate: O tranzacție care conține alte tranzacții.
  • Workflow

Ce este un orar?

Un program este un proces care creează un singur grup de tranzacții paralele multiple și le execută una câte una. Ar trebui să păstreze ordinea în care instrucțiunile apar în fiecare tranzacție. Dacă două tranzacții sunt executate în același timp, rezultatul unei tranzacții poate afecta rezultatul alteia.

Exemplu

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Dacă Tranzacția 2 este executată înainte de Tranzacția 1, vor fi citite informații învechite despre cantitatea de produs. Prin urmare, sunt necesare programe.

Execuția paralelă într-o bază de date este inevitabilă. Dar, execuția paralelă este permisă atunci când există o relație de echivalență între tranzacțiile care se execută simultan. Această echivalență este de 3 tipuri.

ECHIVALENTA REZULTATELOR:

Dacă două programe afișează același rezultat după execuție, se numește program echivalent rezultat. Ele pot oferi același rezultat pentru o anumită valoare și rezultate diferite pentru un alt set de valori. De exemplu, o tranzacție actualizează cantitatea de produs, în timp ce alta actualizează detaliile clientului.

Vedeți Echivalența

Vizualizare echivalență apare atunci când tranzacția din ambele programe efectuează o acțiune similară. De exemplu, o tranzacție inserează detalii despre produs în tabelul de produse, în timp ce o altă tranzacție inserează detalii despre produs în tabelul de arhivă. Tranzacția este aceeași, dar tabelele sunt diferite.

CONFLICT Echivalență

În acest caz, două tranzacții actualizează/vadează același set de date. Există un conflict între tranzacții, deoarece ordinea de execuție va afecta rezultatul.

Ce este serializarea?

Serializarea este procesul de căutare a unui program concurent, care este egal cu un program serial în care tranzacțiile sunt executate una după alta. În funcție de tipul de programări, există două tipuri de serializare:

  • Conflict
  • Vizualizare

Rezumat

  • Managementul tranzacțiilor este o unitate logică de procesare într-un SGBD care implică una sau mai multe operațiuni de acces la baza de date
  • Este o tranzacție este o unitate de program a cărei execuție poate sau nu modifica conținutul unei baze de date.
  • Negestionarea accesului concurent poate crea probleme precum defecțiuni hardware și blocări ale sistemului.
  • Active, Parțial Committed, Committed, Failed & Terminate sunt stări importante ale tranzacției.
  • Forma completă a proprietăților ACID în Baze de date is Atomicitate, consistență, izolare și durabilitate
  • Trei tipuri de tranzacții DBMS sunt bazate pe zone de aplicare, acțiune și structură.
  • Un program este un proces care creează un singur grup de tranzacții paralele multiple și le execută una câte una.
  • Serializarea este procesul de căutare a unui program concurent a cărui ieșire este egală cu un program serial în care tranzacțiile sunt executate una după alta.