Proprietățile tranzacțiilor

Există diferite modele de tranzacții care pot fi clasificate pe baza diferitelor proprietăți, inclusiv structura tranzacției, paralelismul în durata tranzacției și t. D.

În momentul de față, există următoarele tipuri de tranzacții: tranzacții cu lanț de tranzacții plate sau tradiționale și tranzacții imbricate.

tranzacție plate sau tradiționale, caracterizate prin patru proprietăți clasice: atomicitate, coerență, izolare, durabilitate (rezistenta) - ACID (atomicitate, coerență, izolare, durabilitate). Ocazional tranzacție tradițională ACID-numitele tranzacții. Proprietățile de mai sus sunt după cum urmează:

- Atomicitate (atomicitate) proprietate este reflectată în faptul că tranzacția trebuie să fie executate în totalitate sau nu efectuat deloc.

- coerență proprietății (Coerența) se asigură că după finalizarea tranzacției de mutare a datelor de la un stat la altul consecvent - tranzacția nu distruge coerența reciprocă a datelor.

- Izolarea proprietate (izolare) înseamnă că, în competiție pentru accesul la tranzacția de bază de date este prelucrată fizic secvențial, în mod izolat unul de celălalt, dar pentru utilizator se pare ca în cazul în care acestea sunt executate în paralel.

- Proprietate durabilitate (durabilitate) este interpretat după cum urmează: în cazul în care tranzacția este finalizată cu succes, atunci schimbările din datele care au fost făcute nu poate fi pierdut în nici un caz (chiar și în cazul unor erori ulterioare).

Două variante ale tranzacției. În cazul în care toți operatorii au încheiat cu succes și în procesul de tranzacție a fost nici un hardware sau software eșec, tranzacția este comisă.

Încredințează tranzacția - un act care prevede modificări de baze de date de scriere pe disc, care au fost făcute în cursul tranzacției.

Până la tranzacția nu este angajată, permisă anularea acestor modificări, restaurarea bazei de date la starea în care era la începutul tranzacției. Commit tranzacție înseamnă că toate rezultatele tranzacției devin permanente. Acestea vor fi vizibile pentru alte tranzacții numai după tranzacție este angajat. Până la acest punct toate datele afectate de tranzacție, va fi „vizibil“ pentru utilizator într-o stare la începutul tranzacției curente.

Dacă în cursul tranzacției sa întâmplat ceva care face imposibilă rezilierea normală, baza de date trebuie să fie returnate în starea inițială. Restabiliți tranzacția - un act care prevede anularea tuturor modificărilor de date care au fost făcute declarații SQL în corpul tranzacției incomplete curente.

Fiecare declarație într-o tranzacție își îndeplinește partea sa de muncă, dar pentru finalizarea cu succes a lucrărilor în ansamblul său este necesară finalizarea necondiționată a tuturor operatorilor lor. Gruparea declarații în baza de date de tranzacție raportează că acest grup întreg trebuie să fie format integral, în care o astfel de performanță să fie menținută în mod automat.

Standardul ANSI / ISO SQL definește modelul de tranzacție și funcția COMMIT și ROLLBACK. Standardul specifică faptul că o tranzacție începe cu prima SQL declarație, inițiat de către un utilizator sau conținute în program pentru a schimba starea curentă a bazei de date. Toate ulterioare SQL-operatorii alcătuiesc corpul tranzacției. Tranzacția este finalizată într-una din cele patru moduri posibile (Figura 11.1.):

Proprietățile tranzacțiilor

Fig. 11.1. Modelul de tranzacție ANSI / ISO

  1. COMMIT indică finalizarea cu succes a tranzacției; utilizarea acestuia face modificări permanente în baza de date, ca parte a tranzacției curente;
  2. ROLLBACK termină tranzacția, anulează modificările aduse bazei de date în cadrul acestei tranzacții; O nouă tranzacție începe imediat după utilizare ROLLBACK;
  3. finalizarea cu succes a programului, în care a fost inițiat tranzacția curentă, este finalizarea cu succes a unei tranzacții (ca și în cazul în care a fost utilizată o declarație COMMIT);
  4. completarea eronată a programului aborts tranzacției (ca și în cazul în care a fost utilizată ROLLBACK).

În acest model, fiecare operator, care se schimbă starea bazei de date, este considerată o tranzacție, astfel încât finalizarea cu succes a operatorului bazei de date intră într-o nouă stare stabilă.

Primele versiuni ale bazei de date comerciale a fost pus în aplicare modelul de tranzacție ANSI / ISO. Mai târziu, în baza de date Sybase a fost pus în aplicare modelul de tranzacție extins, care include o serie de operațiuni suplimentare. SYBASE Modelul utilizează următoarele patru afirmații:

- BEGIN TRANSACTION declarație anunță începerea tranzacției. Spre deosebire de modelul din standardul ANSI / ISO, în cazul în care începutul tranzacției este definită implicit de prima modificare a datelor operatorului la începutul tranzacției modelului SYBASE este dat în mod explicit de către un operator începe o tranzacție.

- COMMIT TRANSACTION pentru a anunța finalizarea cu succes a tranzacției. Este echivalent cu COMMIT într-un model de standardul ANSI / ISO. Acest operator ca COMMIT operatorul înregistrează toate modificările efectuate în baza de date în timpul tranzacției.

- SALVEAZĂ declarație TRANZACȚII într-o tranzacție creează un punct de salvare, ceea ce corespunde la o stare intermediară a bazei de date stocate în momentul executării acestui operator. Declarația TRANZACȚII SAVE poate fi numele punctului de salvare. Prin urmare, în timpul executării mai multor tranzacții savepoint pot fi stocate corespunzător mai multe stări intermediare.

- Operatorul ROLLBACK are două modificări. Dacă această afirmație este utilizat fără un parametru suplimentar, acesta este interpretat ca un operator de derulare înapoi întreaga tranzacție, care este, în acest caz, este echivalent cu ROLLBACK operatorului de derulare înapoi în modelul ANSI / ISO. În cazul în care operatorul are opțiunea rollback și înregistrată ca ROLLBACK B, este interpretată ca o derulare înapoi tranzacție parțială operator în savepoint B.

Principiile de executare a tranzacțiilor în modele extinse de tranzacție sunt prezentate în Fig. 11.2. Cifra marcat operatorilor numere pentru noi a fost mai ușor să urmeze cursul operațiunii în toate cazurile admisibile.

Proprietățile tranzacțiilor

Fig. 11.2. Exemple de execuție de tranzacții în modelul extins

O tranzacție începe o tranzacție explicită a pornit de operator, care se află în numărul nostru schema 1. În continuare este operatorul 2, care este operatorul de căutare și nu schimbă starea actuală a bazei de date, și ca urmare ea operatorii 3 și 4 converti baza de date este deja în noul stat. Operatorul 5 magazine această nouă bază de date stare intermediară și o marchează ca o stare intermediară, la punctul A. Aceasta este urmată de operatorii 6 și 7, care transferă baza de date într-o nouă stare. 8 A, operatorul menține această stare ca o stare intermediară, la punctul B. Operatorul 9 efectuează introducerea de noi date, iar operatorul 10 conduce unele condiție de verificare 1; în cazul în care condiția 1 este îndeplinită, atunci operatorul 11, care își petrece rollback la o stare B. intermediar Aceasta înseamnă că consecințele acțiunilor operatorului 9, așa cum au fost șterse, iar baza de date se întoarce din nou în starea intermediară, dar după operatorul 9, ea a fost deja în noua condiție. Și după rulare înapoi o tranzacție în locul operatorului 9, care a fost efectuat mai devreme din cauza statutului în cadrul operatorului bazei de date 13 introduce date noi, iar apoi se trece la operatorul 14. Operatorul 14 verifică din nou starea, dar o nouă condiție 2; în cazul în care condiția este îndeplinită, atunci se trece la operatorul 15, care se rostogolește înapoi tranzacția în stare intermediară A, adică, toate declarațiile care modifică baza de date, începând cu 6 și se termină cu 13, este a eșuat, adică rezultatele punerii în aplicare a acestora au dispărut și suntem din nou în poziția de a şi, după executarea instrucțiunii 4. apoi, se trece la operatorul 17 care actualizează conținutul bazei de date, apoi se trece la operatorul 18, care este asociat cu condițiile de control sau 3. test de control al transmisiei anunță op Rathore 20, prin care se angajează tranzacția, iar baza de date se duce într-o nouă stare stabilă, și schimbați-l ca parte a tranzacției curente nu este posibilă. Sau, în cazul în care controlul a trecut la operatorul 19, tranzacția este readusă la începutul bazei de date și revine la starea sa inițială, și toate stările intermediare sunt deja verificate, și de a efectua o operație de derulare înapoi în starea intermediară, după ce operatorul 19 este imposibilă.

articole similare