Tranzacție - (tranzacția Engl.) - un grup de operații consecutive la baza de date, care este o unitate logică de lucru cu datele. Tranzacția poate fi efectuată fie păstrarea integrității în întregime și cu succes a datelor și orice alte operațiuni care se extinde în paralel sau nu efectuate deloc și, prin urmare, nu ar trebui să producă nici un efect. Tranzacția ia bazei de date de la o stare consistentă la alta.
tranzacție este angajată, o operațiune «comite» După finalizarea cu succes. Atunci când apare o defecțiune acțiuni deja finalizate sunt anulate, iar tranzacția este „derulată înapoi“ operațiune se realizează «retroactivitate».
Proprietățile care ar trebui să aibă tranzacția și susținerea sistemului lor. De obicei, pentru a se referi la aceste proprietăți utilizate ACID prescurtare - atomicitate, coerență, izolare, durabilitate. Traducerea în limba română - atomicitate, coerență, izolare, și durabilitate. Să considerăm aceste proprietăți mai detaliat.
Atomicitate înseamnă doar tranzacție indivizibilă și orice cerință de a efectua în întregime, sau să nu facă deloc.
Coerența - consecvența înseamnă, de asemenea, conformitatea cu baza de date regulile de business. În special, constrângerile de integritate poate fi urmată de o interdicție privind soldul negativ în cont, dar, spun, cerințele de capital debitate și creditate valoarea transferului de fonduri de la un cont la altul - aceasta este o regulă de afaceri care utilizează constrângeri de integritate nu exprimă.
Izolarea - această tranzacție imobiliară efectuată în mod independent. Aceasta este, în timpul executării unei tranzacții altele nu pot afecta rezultatul punerii sale în aplicare. Furnizarea complet independent unul de altul tranzacție necesită resurse adecvate, și afectează negativ viteza de operare cu datele, astfel încât există mai multe niveluri de izolare așa-numitele, care vor fi discutate mai târziu.
Durabilitate - o tranzacție imobiliară stocată în sistem „pentru totdeauna“, după finalizarea cu succes. Este evident că în procesul de baze de date pot apărea erori de hardware, pene de curent, alte erori, dar este garantat că, dacă un mesaj cu privire la finalizarea cu succes a tranzacției, modificările aduse acesteia în datele salvate în orice caz și atunci când starea bazei de date va fi restabilită după eșec, aceste modificări nu merg nicăieri.
Vosstanovlenie.E În cazul în care utilizatorul nu folosește tranzacția în mod explicit, se presupune că fiecare operațiune - o singură tranzacție. Astfel, activitatea fiecărei cereri de utilizator - un lanț al tranzacției. Dacă aveți mai mulți utilizatori (sau folosind aplicații multithreaded) tranzacții pot fi de mai multe lanțuri.
Baze de date se numește jurnal de tranzacții, care este stocat pe disc. Intrările din jurnal sunt făcute cu privire la acțiunile fiind efectuate de sistem înainte de a face cu adevărat o schimbare în datele stocate pe disc. Jurnalul este stocat și datele privind înregistrările de stat inițiale. Aceste date sunt utilizate în caz de anulare a tranzacției pentru a restabili starea inițială a bazei de date.
Paralelism. Probleme de tranzacții simultane și niveluri de izolare.
Organizarea datelor paralele a avea acces la o sarcină destul de banală. Luați în considerare problemele care pot apărea în cazul în care accesul concurent la date este arbitrară.
- problemă de schimbare ultima. Aceasta are loc atunci când două tranzacții încerca să modifice aceleași date.
- Problema lecturii „murdar“. Apare în situațiile în care o tranzacție citește datele modificate de alte, care nu a comis încă tranzacția. Prin urmare, în cazul celui de al doilea rollback tranzacție la prima rămân date incorecte.
- problemă Onetime lectură. Aceasta are loc atunci când o tranzacție citește date în mod repetat, și alte tranzacții ale acestei schimbări de timp.
- citește „fantomă“ problemă. Aceasta are loc atunci când o tranzacție citește date de mai multe ori, iar celălalt (sau altele) a tranzacției în acest moment, se adaugă. Ca urmare, rezultatele lecturi mai recente vor conține informații suplimentare, „fantomelor“, care îndeplinesc criteriile de filtrare, dar nu și-au ales.
Pentru a putea obține o performanță acceptabilă și pentru a minimiza posibilele probleme au fost introduse niveluri de izolare. Patru dintre ei, și ei sunt numerotate de la 0 - cel mai mic nivel 3 - cea mai mare.
0 - neangajate citit. La acest nivel, tranzacția izolat cel mai slab. La acest nivel, eventual, de lectură „murdar“, și non-repetarea lectură și de lectură „fantomelor“. garantat doar absența actualizărilor pierdute - accesul simultan la mai multe tranzacții cu unul și aceleași date sunt excluse pentru a le modifica.
2 - repetabile citit. Numele acestui nivel, „lectură repetată“, sugerează că aceasta exclude, de asemenea, problema non-recurente lectură. Aceasta este considerată ca una datele tranzacției sunt protejate de modificarea sau ștergerea de către alte tranzacții.
3 - serializabil. Acesta este cel mai înalt nivel de izolare, românesc numele său poate fi tradus ca „ordine“, deși există, de asemenea, o opțiune, „serializate“. La acest nivel, baza de date execută tranzacția în așa fel încât rezultatul executării lor paralele a fost echivalentă cu punerea în aplicare consecventă a acestora. Acest nivel elimina toate problemele de acces simultan la date.
Pentru a asigura izolarea cele mai importante tranzacții SGBD mecanism de blocare. Înainte de a începe prelucrarea datelor, tranzacția dobândește un sistem de blocare, și protejează astfel, datele de la schimbări nedorite. Există două principale de blocare - citire și scriere de blocare de blocare. De asemenea, menționată ca de blocare S (de la comun, partajat) și X-blocare (de la EXCLUSIVĂ - exclusiv). Înainte de a lua în considerare datele necesare, tranzacția este de a stabili un sistem de blocare de citire. citește blocare, fiind instalat, nu împiedică instalarea altor tranzacții citite de blocare, dar să interzică blocul unitate de înregistrare. Deci, exclus situația de citire non-recurente. În cazul în care tranzacția pe care doriți să modificați anumite date, atunci ar trebui să le setați scrie blocare. Această blocare împiedică stabilirea altor încuietori, astfel încât alte tranzacții nu pot nici citi, nici măcar schimba aceleași date. În cazul în care tranzacția încearcă să efectueze una dintre operațiunile, care se confruntă cu blocare, acesta intră în modul de așteptare, acesta este suspendat până la momentul până când nu sunt datele dorite.
Pentru a detecta interblocările pot utiliza abordări diferite. În multe baze de date, această problemă este rezolvată printr-un mecanism de timeout. Pentru fiecare tranzacție este determinată de momentul în care acesta trebuie să fie executat, iar în cazul în care nu se potrivește, atunci nu este derulată înapoi. Se pare că, chiar dacă există un impas, este stabilit pentru o anumită perioadă scurtă de timp și apoi se permite în mod automat anularea unei tranzacții.