Proprietățile tranzacției

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 și așa mai departe.

Î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 sau tradiționale se caracterizează prin patru proprietăți clasice: atomicitate, consistență, izolare, durabilitate - ACID (Atomicitate, Consistență, Izolare, Durabilitate). Uneori tranzacțiile tradiționale se numesc tranzacții ACID. Proprietățile menționate mai sus înseamnă următoarele:

  • Proprietatea atomicității (Atomicitatea) este exprimată prin faptul că tranzacția trebuie să fie efectuată în ansamblu sau să nu fie efectuată deloc.
  • Proprietatea Consistență asigură că, pe măsură ce tranzacțiile progresează, datele se mută dintr-o stare consecventă în alta - tranzacția nu distruge coerența reciprocă a datelor.
  • Proprietatea de izolare înseamnă că tranzacțiile care concurează pentru accesarea bazei de date sunt prelucrate fizic secvențial, separat unul de celălalt, dar pentru utilizatori se pare că funcționează în paralel.
  • Proprietatea durabilității este interpretată după cum urmează: în cazul în care tranzacția este încheiată cu succes, modificările datelor pe care le-a produs nu pot fi pierdute în nici un caz (chiar și în cazul erorilor ulterioare).

Există două opțiuni pentru finalizarea unei tranzacții. Dacă toți operatorii au succes și nu au loc defecțiuni software sau hardware în timpul tranzacției, tranzacția este angajată.

O comitere a tranzacțiilor este o acțiune care permite bazei de date să scrie modificări în baza de date care au fost făcute în timpul tranzacției.

Până când tranzacția este fixată, este permisă revocarea acestor modificări, restabilirea bazei de date la starea în care era în momentul tranzacției. 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. Până atunci, toate datele afectate de tranzacție vor fi "vizibile" utilizatorului în starea de la începutul tranzacției curente.

Dacă sa întâmplat ceva în timpul executării tranzacției, ceea ce face imposibilă finalizarea acesteia în mod normal, 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.

Fiecare operator dintr-o tranzacție își îndeplinește partea de serviciu, dar pentru a finaliza toată munca în ansamblul său, toți operatorii trebuie să fie reziliați necondiționat. Gruparea operatorilor într-o tranzacție indică DBMS-ului că întregul grup trebuie executat ca o singură unitate, iar această implementare trebuie suportată automat.

Standardul ANSI / ISO SQL definește un model de tranzacție și funcțiile instrucțiunilor COMMIT și ROLLBACK. Standardul specifică faptul că tranzacția începe cu prima instrucțiune SQL inițiată de utilizator sau conținută în program care modifică starea curentă a bazei de date. Toate instrucțiunile SQL ulterioare constituie corpul tranzacției. Tranzacția se termină cu una din cele patru căi posibile (Figura 11.1):

  1. declarația COMMIT indică o tranzacție de succes; utilizarea sa face modificări constante în baza de date în cadrul tranzacției curente;
  2. instrucțiunea ROLLBACK întrerupe tranzacția, aruncând înapoi modificările făcute în baza de date în cadrul acestei tranzacții; o nouă tranzacție începe imediat după utilizarea ROLLBACK;
  3. finalizarea cu succes a programului în care a fost inițiată tranzacția curentă înseamnă finalizarea cu succes a tranzacției (ca și cum ar fi fost folosită declarația COMMIT);
  4. o terminare eronată a programului termină tranzacția (ca în cazul în care a fost utilizată instrucțiunea ROLLBACK).

În acest model, fiecare operator care schimba starea bazei de date este tratat ca o tranzacție, astfel încât, pe baza succesului acestei declarații, baza de date trece într-o stare stabilă nouă.

În primele versiuni ale sistemului DBMS comercial, a fost implementat un model de tranzacție ANSI / ISO. Ulterior, a fost implementat un model de tranzacție extins în sistemul DBMS SYBASE, care include o serie de operațiuni suplimentare. Următorii patru operatori sunt utilizați în modelul SYBASE:

  • Instrucțiunea BEGIN TRANSACTION raportează începutul tranzacției. Spre deosebire de standardul ANSI / ISO, unde începutul tranzacției este specificat implicit de primul operator de modificare a datelor, în modelul SYBASE, începerea tranzacției este specificată explicit folosind instrucțiunea de pornire a tranzacției.
  • Instrucțiunea COMMIT TRANSACTION raportează încheierea cu succes a tranzacției. Este echivalent cu operatorul COMMIT din modelul standard ANSI / ISO. Acest operator, ca și instrucțiunea COMMIT, surprinde toate modificările efectuate în baza de date în timpul tranzacției.
  • Instrucțiunea SAVE TRANSACTION creează un punct de salvare în interiorul tranzacției care corespunde cu starea intermediară a bazei de date stocate în momentul acestei instrucțiuni. Instrucțiunea SAVE TRANSACTION poate conține numele punctului de salvare. Prin urmare, în timpul tranzacției pot fi memorate mai multe puncte de salvare corespunzătoare mai multor stări intermediare.
  • Instrucțiunea ROLLBACK are două modificări. Dacă acest operator este utilizat fără un parametru suplimentar, atunci acesta este interpretat ca operatorul de returnare a întregii tranzacții, adică în acest caz este echivalent cu operatorul ROLLBACK rollback din modelul ANSI / ISO. Dacă operatorul de redirecționare are un parametru și este scris sub forma ROLLBACK B, atunci acesta este interpretat ca operatorul unei răsturnări parțiale a tranzacției la punctul de stocare B.

Proprietățile tranzacției

Fig. Modelul de tranzacție ANSI / ISO

Principiile de efectuare a tranzacțiilor în modelul de tranzacție extins sunt prezentate în Fig. 11.2. În figură, operatorii sunt marcați cu numere, astfel încât ar fi mai convenabil pentru noi să urmărim evoluția tranzacției în toate cazurile admisibile.

Proprietățile tranzacției

Fig. Exemple de tranzacții în modelul extins

Un 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 stochează această stare intermediară nouă a bazei de date și o marchează ca o stare intermediară la punctul A. Următoarele sunt operatorii 6 și 7, care traduc baza de date într-o stare nouă. Și operatorul 8 păstrează această stare ca o stare intermediară la punctul B. Operatorul 9 efectuează introducerea de date noi, iar operatorul 10 efectuează o anumită verificare a condiției 1; în cazul în care condiția 1 este îndeplinită, atunci operatorul este îndeplinită 11 care conduce rollback la o stare B. intermediar Aceasta înseamnă că efectele acțiunilor operatorului, cum ar fi 9 șterse și baza de date revine la starea intermediară, dar după ce 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, ci o stare povoe 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ă.

Desigur, modelul de tranzacție extins, propus de SYBASE, susține un mecanism mult mai flexibil pentru efectuarea tranzacțiilor. Punctele de salvare vă permit să setați marcatori într-o tranzacție astfel încât să puteți anula doar o parte din lucrarea efectuată în tranzacție. Este recomandabil să utilizați puncte de economisire în tranzacții lungi și complexe pentru a vă asigura că modificările pot fi revocate pentru anumiți operatori. Cu toate acestea, acest lucru cauzează costuri suplimentare ale resurselor sistemului - operatorul face munca, iar modificările sunt apoi anulate; De obicei îmbunătățirile în logica de procesare pot fi o soluție mai optimă.

ȘTIRI ALE FORUMULUI
Cavalerii teoriei eterului

Despre acest lucru Kornilov a scris pe pagina sa în sotsseti.

Potrivit lui Kornilov, mesajul său a fost primit cu neîncredere.

Acum, Vladimir Kornilov a decis să se întoarcă la acest subiect, în legătură cu care publică pe Facebook imagini cu misteriosii israelieni care au luat parte la masacrul de la Odessa.

Printre numeroasele probleme pe care Kornilov, a spus el, ar dori să primească un răspuns, de exemplu:

"De ce au mers accidental în jurul Odisei cu echipament medical, mănuși de cauciuc, de unde știau în prealabil că vor fi răniți și uciși? Sau de ce soldatul a uitat brusc limba engleză, când și-a dat seama că a fost înregistrat?

apa lacurilor, mărilor și oceanelor prin lushariya --------- nordice roti spre m Lc - p-in-k-i, iar apa din polushariya sudic - ra - conductive dizolvată -sya- po- h asul săgeată - Obra-zuya- firma -Oral-furnica-ski-e-ovo-apă.

Principalul motiv pentru rotirea eddiilor este vântul local.
Iar cu cât este mai mare viteza vântului, cu atât este mai mare viteza de rotație a vaporilor și, în consecință, cu atât este mai mare forța centrifugă a vaporilor, crescând astfel nivelul apelor mărilor și oceanelor.
Și cu cât forța centrifugală a bazinelor este mai mică, cu atât nivelul apei și oceanelor este mai scăzut.

Viteza curenților de-a lungul perimetrului mărilor și oceanelor nu este aceeași peste tot și depinde de adâncimea coastei. În partea superficială a mării, viteza curenților crește, iar în apele adânci ale mării scade.
fluctuațiile sezoniere ale nivelului apei ceas-tsya nu în jurul valorii de coasta mărilor și oceanelor-s, dar numai în acele coaste unde -mare viteza unghiulară a fluxurilor și a forței centrifuge, prin urmare, de mare a apei. (Forța centrifugă F = v / r).
Pe coastele rectilinii, unde curenții nu au viteză unghiulară, nivelul apei nu crește.

Articole similare