Gestionarea tranzacțiilor SGBD: Ce sunt proprietățile ACID?

Cuprins:

Anonim

Ce este o tranzacție în baza de date?

O tranzacție de bază de date este o unitate logică de procesare într-un SGBD care presupune una sau mai multe operațiuni de acces la baze de date. Pe scurt, tranzacțiile bazei 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 tranzacție de început și de sfârșit sunt considerate ca o singură tranzacție logică în SGBD. În timpul tranzacției baza de date este inconsistentă. Doar odată ce baza de date este angajată, starea este schimbată dintr-o stare consecventă în alta.

În acest tutorial, veți învăța:

  • Fapte despre tranzacțiile bazei de date
  • De ce aveți nevoie de concurență în Tranzacții?
  • Statele tranzacțiilor
  • Ce sunt proprietățile ACID?
  • Tipuri de tranzacții
  • Ce este un program?

Fapte despre tranzacțiile bazei de date

  • O tranzacție este o unitate de program a cărei execuție poate modifica sau nu conținutul unei baze de date.
  • Conceptul de tranzacție din SGBD este executat ca o singură unitate.
  • Dacă operațiunile bazei de date nu actualizează baza de date, ci recuperează doar 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 un STAT CONSISTENT la altul
  • Tranzacțiile SGBD trebuie să fie atomice, consistente, izolate și durabile
  • Dacă baza de date ar fi într-o stare incoerentă înainte de o 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 utilizat de mai mulți utilizatori și procese simultan. De exemplu, sistemul bancar, feroviar și sistemele de rezervări aeriene, monitorizarea pieței bursiere, inventarul supermarketurilor și casele etc.

Dacă nu gestionați accesul simultan, puteți crea probleme precum:

  • Eroare hardware și blocarea sistemului
  • Executarea concomitentă a aceleiași tranzacții, blocare sau performanță lentă

Statele tranzacțiilor

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

Stat Tipuri de tranzacții
Starea activă O tranzacție intră într-o stare activă atunci când începe procesul de execuție. În această stare se pot efectua operații de citire sau scriere.
Parțial angajat O tranzacție intră în starea parțial angajată după încheierea unei tranzacții.
Statul angajat Când tranzacția este angajată la starea sa, aceasta și-a finalizat deja execuția cu succes. Mai mult, toate modificările sale sunt înregistrate permanent în baza de date.
Stat eșuat O tranzacție consideră eșuată atunci când una dintre verificări eșuează sau dacă tranzacția este întreruptă în timp ce se află în starea activă.
Statul reziliat 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 de stat pentru o tranzacție de bază de date

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

  1. Odată ce o tranzacție indică execuția, aceasta devine activă. Poate emite operația CITIȚI sau SCRIVE.
  2. Odată ce operațiunile CITIȚI și SCRIȘI se încheie, tranzacțiile devin parțial stări angajate.
  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 modificările în tranzacție permanent. Dacă această verificare are succes, tranzacția se angajează și intră în starea angajată.
  4. Dacă verificarea eșuează, tranzacția merge la starea Failed.
  5. Dacă tranzacția este întreruptă în timp ce se află în starea activă, aceasta trece la starea eșuată. Tranzacția ar trebui să fie anulată pentru a anula efectul operațiilor sale de scriere asupra bazei de date.
  6. Starea terminată se referă la tranzacția care părăsește sistemul.

Ce sunt proprietățile ACID?

Proprietățile ACID sunt utilizate pentru menținerea integrității bazei de date în timpul procesării tranzacțiilor. ACID în SGBD înseamnă A tomicity, C onsistency, I solation și D urability.

  • Atomicitate: O tranzacție este o singură unitate de funcționare. Fie îl executați în totalitate, fie nu îl executați deloc. Nu poate exista o execuție parțială.
  • Coerență: Odată ce tranzacția este executată, aceasta ar trebui să treacă de la o stare consecventă la alta.
  • Izolare: Tranzacția trebuie executată separat de alte tranzacții (fără blocaje). În timpul execuției simultane a tranzacțiilor, rezultatele intermediare ale tranzacțiilor efectuate simultan nu ar trebui să fie puse la dispoziția celorlalți. (Nivel 0,1,2,3)
  • Durabilitate: · După finalizarea cu succes a unei tranzacții, modificările din baza de date ar trebui să persiste. Chiar și în cazul defecțiunilor sistemului.

Proprietate ACID în SGBD cu exemplu:

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

Transaction 1: Begin X=X+50, Y = Y-50 ENDTransaction 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 plată de dobândă de 10%.

Dacă ambele tranzacții sunt trimise î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 domeniilor de aplicare

  • Nedistribuit vs. distribuit
  • Compensarea tranzacțiilor
  • Timpul tranzacțiilor
  • On-line vs. lot

Pe baza acțiunilor

  • Doi pasi
  • Restricționat
  • Model de acțiune

Pe baza structurii

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

Ce este un program?

O programare este un proces care creează un singur grup de tranzacții paralele multiple și le execută pe rând. 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 producția celeilalte.

Exemplu

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

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

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

EQUIVALENȚA REZULTATULUI:

Dacă două planificări afișează același rezultat după executare, se numește program echivalent cu rezultatul. Acestea 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 produsului, în timp ce altele actualizează detaliile clientului.

Vizualizați echivalența

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

Echivalența CONFLICTULUI

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

Ce este Serializabilitatea?

Serializabilitatea este procesul de căutare a unei planificări concurente cu ieșire egală cu o programare serială în care tranzacția se execută una după alta. În funcție de tipul de programe, există două tipuri de serializabilitate:

  • Conflict
  • Vedere

Rezumat:

  • Gestionarea tranzacțiilor este o unitate logică de procesare într-un SGBD care presupune una sau mai multe operațiuni de acces la baze de date
  • Este o tranzacție este o unitate de program a cărei execuție poate modifica sau nu conținutul unei baze de date.
  • Dacă nu gestionați accesul simultan, puteți crea probleme precum defecțiuni hardware și blocări ale sistemului.
  • Activ, Parțial angajat, Angajat, Eșuat și Terminat sunt stări importante ale tranzacției.
  • Forma completă a Proprietăților ACID în SGBD este Atomicitate, Consistență, Izolare și Durabilitate
  • Trei tipuri de tranzacții SGBD se bazează pe domeniile de aplicare, acțiune și structură.
  • O programare este un proces care creează un singur grup de tranzacții paralele multiple și le execută pe rând.
  • Serializabilitatea este procesul de căutare a unui program simultan a cărui ieșire este egală cu un program serial în care tranzacțiile sunt executate una după alta.