Tranzacție (baze de date)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În teoria bazelor de date , termenul tranzacție indică orice succesiune de operații legale care, dacă sunt efectuate corect, produce o modificare a stării unei baze de date . În caz de succes, rezultatul operațiunilor trebuie să fie permanent sau persistent , în timp ce în caz de eșec trebuie să revină la starea anterioară începerii tranzacției. Tranzacțiile trebuie să aibă următoarele proprietăți logice: atomicitate , consistență , izolare și durabilitate ( acronim ACID ).

Tranzacțiile sunt în mod normal implementate de sistemul de gestionare a bazelor de date sau de administratorii de tranzacții ( servere de aplicații sau medii instalate direct pe mașina gazdă unde se află baza de date (de exemplu, CICS )).

Descriere

O tranzacție, pentru a fi astfel, trebuie să aibă așa-numitele proprietăți ACID , în special în sistemele în care pot fi efectuate mai multe tranzacții în același timp. Tranzacția este un sistem de tip on / off care nu se poate termina într-o stare intermediară,

În limbile de acces DBMS, gestionarea tranzacțiilor face parte din Limbajul de manipulare a datelor . De fapt, modificările schemei sau permisiunilor bazei de date nu sunt ușor de gestionat cu tranzacțiile. SGBD se spune că este tranzacțional dacă este capabil să garanteze și să mențină integritatea datelor , adică dacă tranzacția nu poate ajunge într-o stare intermediară (sistemul pornit / oprit). SQL în tranzacții lingvistice începe cu o declarație „BEGIN TRAN și se termină cu un COMMIT TRAN (eventual cu notificarea tranzacției finalizate corect), sau cu un TRAN ROLLBACK, de exemplu în caz de eroare (întrerupere) și restabilirea stării inițiale (automat sau manual) [1] .

O utilizare tipică a tranzacțiilor este următoarea:

  • Înainte de a executa o tranzacție, se execută o instrucțiune „începe tranzacția”.
  • Se efectuează operațiile de interogare și modificare a datelor.
  • Dacă se constată o anomalie, se execută o declarație numită abort, pentru a anula tranzacția care produce un mecanism de revenire .
  • Dacă toate operațiunile au fost efectuate fără a întâmpina anomalii, se emite o declarație numită commit care confirmă tranzacția.

Unele sisteme nu au o declarație de pornire a tranzacției, deoarece la conectarea la SGBD, o tranzacție este inițiată automat și, atunci când se efectuează o comitere sau revenire, se inițiază automat o altă tranzacție.

Dacă vă deconectați de la SGBD fără a comite, unele SGBD se angajează automat (autocommit), altele revin.

Pentru a implementa o tranzacție, este de obicei utilizată o zonă specială de suport pe hard disk , unde datele originale sunt copiate chiar înainte de a fi modificate. Când se face o confirmare, datele originale copiate sunt șterse. Când se efectuează o revenire, datele originale copiate sunt copiate înapoi. Prin urmare, un commit este mai eficient decât un rollback.

Sub-tranzacții

O tranzacție este tratată ca un set de sub-tranzacții. Fiecare sub-tranzacție constă dintr-o operație de citire ro a write w.

Programa

O secvență de execuție a unui set de tranzacții se numește program . Un program este serial dacă o tranzacție se încheie înainte de începerea următoarei tranzacții.

Tipuri de avorturi

O tranzacție se poate încheia din cauza unui avort . Există două tipuri de avorturi:

  • Întrerupeți la runtime , care este lansat în timpul executării tranzacției atunci când SGBD constată o anomalie, cum ar fi o divizare la 0 și execută automat o revenire ;
  • Abort de sistem , care este lansat în cazul unei erori de sistem, cum ar fi încetarea bruscă a SGBD, din cauza unei intervenții externe sau a unei erori sau a unei opriri bruște a computerului . Când SGBD este reactivat, acesta revine automat înapoi tranzacțiile care erau în desfășurare în momentul blocării .

O posibilă cauză a eșecului tranzacției este spațiul de memorie insuficient pentru a copia datele originale.

Notă

  1. ^ (RO) Ce sunt BEGIN TRAN, ROLLBACK TRAN, COMMIT TRAN și , pe mssqltips.com. Adus la 22 aprilie 2019 ( arhivat la 23 ianuarie 2021) .

Elemente conexe

Alte proiecte

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT