Proprietățile tranzacției. Metode de completare a tranzacțiilor
Există diferite modele de tranzacții care pot fi clasificate pe baza diferitelor proprietăți, inclusiv structura tranzacției, paralelismul în cadrul tranzacției, durata etc.
În prezent, se disting următoarele tipuri de tranzacții: tranzacții plate sau clasice, tranzacții în lanț și tranzacții imbricate.
Operațiunile plate se caracterizează prin proprietăți clasice: atomicitate, consistență, izolare și longevitate.
· Proprietatea atomicității se exprimă prin faptul că tranzacția trebuie efectuată în ansamblu sau nu este efectuată deloc.
· Proprietatea de consistență asigură că, pe măsură ce tranzacția avansează, datele se mută dintr-o stare convenită într-o altă stare consecventă - tranzacția nu distruge coerența reciprocă a datelor.
· Proprietatea de izolare înseamnă că tranzacțiile care concurează pentru accesul la baza de date sunt prelucrate fizic secvențial, izolate una de cealaltă, dar pentru utilizatori se pare că funcționează în paralel.
Proprietatea de longevitate înseamnă că, în cazul în care tranzacția este încheiată cu succes, schimbările în datele pe care le-a produs nu pot fi pierdute în nici un caz, chiar și în cazul unor erori ulterioare.
Există două opțiuni pentru finalizarea tranzacției:
· Dacă toți operatorii au succes și nu au loc defecțiuni software sau hardware în timpul tranzacției, tranzacția este angajată. (Fixarea este scrisă pe modificările discului la baza de date care au fost făcute în timpul tranzacției). Până când tranzacția este angajată, aceste modificări pot fi anulate și baza de date poate fi returnată în starea în care a fost în momentul în care a început tranzacția. Fixarea unei tranzacții înseamnă că toate rezultatele tranzacțiilor devin permanente. Acestea vor deveni vizibile pentru alte tranzacții numai după tranzacția în curs.
· Dacă tranzacția eșuează, baza de date trebuie returnată în starea inițială. O revocare a tranzacției este o acțiune care asigură faptul că toate modificările aduse datelor care au fost făcute de instrucțiunile SQL din corpul tranzacției în așteptare sunt anulate.
În standardul ANSI / ISO sunt definiți operatorii COMMIT și ROLLBACK, în standard, începutul tranzacției este specificat implicit de primul operator de modificare a datelor; Operatorul COMMIT indică o terminare de succes a tranzacției, rezultatele tranzacției fiind fixate în memoria externă; Atunci când tranzacția este terminată de instrucțiunea ROLLBACK, rezultatele tranzacției sunt anulate. Finalizarea cu succes a programului în care a fost inițiată tranzacția înseamnă finalizarea cu succes a tranzacției (ca și când se utilizează instrucțiunea COMMIT), finalizarea nereușită - încheie tranzacția (ca în cazul în care a fost utilizată instrucțiunea ROLLBACK). În acest model, fiecare operator care modifică starea datelor este tratat ca o tranzacție. Acest model a fost implementat în primele versiuni ale sistemului DBMS comercial. Ulterior, modelul de tranzacție extins a fost implementat în schema SYBASE DBMS.
În modelul de tranzacție extins (de exemplu, în DBMS SQL SERVER) sunt furnizate o serie de operații suplimentare:
· Instrucțiunea BEGIN TRANSACTION raportează începutul tranzacției;
• Instrucțiunea COMMIT TRANSACTION raportează încheierea cu succes a tranzacției. Acest operator, precum și modelul COMMIT din modelul standard ANSI / ISO, stabilește toate modificările efectuate în baza de date în timpul tranzacției;
· Operatorul SAVE TRANSACTION creează un punct de salvare în cadrul tranzacției care corespunde cu starea intermediară a bazei de date stocată în momentul executării acestui operator. În instrucțiunea SAVE TRANSACTION, se poate seta numele punctului de salvare, astfel încât în timpul tranzacției pot fi stocate mai multe puncte de stocare corespunzătoare mai multor stări intermediare;
· ROLLBACK are 2 modificări. Dacă este utilizat fără un parametru suplimentar, acesta este interpretat ca operatorul de returnare a întregii tranzacții, dacă are parametrul ROLLBACK n. atunci se interpretează ca operatorul unei răsturnări parțiale a tranzacției către punctul de depozitare n.
Este recomandabil să utilizați puncte de economisire în tranzacții lungi și complexe pentru a vă asigura că modificările efectuate de anumiți operatori pot fi anulate.
În cele mai multe cazuri, puteți seta un parametru numit AUTOCOMMIT. care va aminti automat toate comenzile executabile, iar acțiunile care au condus la eroare vor fi întotdeauna anulate automat. De obicei, acest mod este setat folosind tipul de comandă: