Rezumat: Definirea unei tranzacții și proprietățile sale; a prezentat tranzacții explicite, implicite, automate și imbricate. Descrie mijloacele de prelucrare și de gestionare a tranzacției. Mecanismul de conservare și rollback tranzacție. Introduce conceptul de paralelism în operare și gestionare metode de baze de date în paralel cu utilizarea de încuietori. O descriere a nivelurilor de încuietori și niveluri de izolare server. Evidențiază principalele și speciale tipuri de încuietori.
Introducere în tranzacție
Conceptul de tranzacție - o parte integrantă a oricărei baze de date client-server.
În cadrul tranzacției a însemnat indivizibilă în ceea ce privește impactul asupra secvenței bazei de date a declarațiilor de manipulare a datelor (citire, stergere, insert, update), ceea ce conduce la una dintre cele două rezultate posibile: fie se realizează secvența în cazul în care toți operatorii din dreapta, sau întreaga tranzacție este derulată înapoi, în cazul în care cel puțin unul operatorul nu poate fi executată cu succes. de procesare a tranzacțiilor asigură integritatea datelor în baza de date. Astfel, tranzacția ia bazei de date de la un stat la altul coerent.
Menținerea mecanismului de tranzacție - un indicator al nivelului de dezvoltare a bazei de date. Întreținerea corectă a tranzacției este, de asemenea, baza pentru asigurarea integrității bazei de date. Tranzacțiile constituie, de asemenea, baza de izolare în sistemele multi-utilizator în cazul în care aceeași bază de date poate rula în paralel mai mulți utilizatori sau aplicații. Unul dintre principalele obiective ale bazei de date - pentru a asigura izolarea. și anume Crearea unui astfel de mod de operare, în care fiecare utilizator ar fi crezut că baza de date este disponibilă numai pentru el. O astfel de bază de date sarcină numită tranzacții paralele.
Cele mai multe dintre acțiunile întreprinse făcute în corpul tranzacției. Implicit, fiecare comandă este executată ca o tranzacție separată. Utilizatorul poate specifica în mod explicit începutul și sfârșitul ei. pentru a putea include câteva echipe.
Atunci când sistemul de gestionare a bazei de date de tranzacție trebuie să respecte anumite reguli de prelucrare a unui set de instrucțiuni incluse în tranzacție. În special, a dezvoltat patru reguli, cunoscute sub numele de cerințele ACID. acestea asigură acuratețea și fiabilitatea sistemului.
tranzacții ACID-imobiliare
Detaliile tranzactiei sunt descrise în termenii ACID (atomicitate, coerență, izolare Durabilitate -. Rezistenta la izolare consistenta Indivizibilului ...).
- tranzacție indivizibilă, în sensul că acesta este un întreg. Toate componentele sau au loc sau nu. Nu există tranzacții parțiale. În cazul în care doar o parte a tranzacției poate fi efectuată. acesta este respins.
- Tranzacția este consecventă. pentru că nu încalcă logica de afaceri și relațiile dintre elementele de date. Această proprietate este foarte important în dezvoltarea sistemelor client-server, la fel ca în depozitul de date primește un număr mare de tranzacții din diferite sisteme și facilități. În cazul în care cel puțin unul dintre ei ar încălca integritatea datelor, toate celelalte pot da rezultate incorecte.
- Tranzacția este întotdeauna izolat. deoarece rezultatele sunt auto-suficiente. Ele nu depind de tranzacțiile anterioare sau ulterioare - această proprietate se numește înseamnă serializabile că, în secvența tranzacției independente.
- Tranzacția este stabilă. După finalizarea acestuia este stocat în sistem, pe care nimic nu se poate reveni la starea inițială (înainte de tranzacție), adică tranzacția de fixare. ceea ce înseamnă că este întotdeauna valabilă, chiar dacă sistemul se blochează. Aceasta implică o anumită formă de stocare permanentă în memorie ca parte a unei tranzacții.
Regula de mai sus execută serverul. Programatorul selectează nivelul dorit numai izolației. ii pasa cu respectarea regulilor de integritate a datelor și de afaceri logice. Acesta este responsabil pentru crearea unor algoritmi eficienți și în mod logic corecte de prelucrare a datelor. El decide care echipele ar trebui să fie efectuată ca o singură tranzacție. și care pot fi împărțite în mai multe tranzacții executate secvențial. Este posibil să se utilizeze tranzacții mici. și anume inclusiv cât mai puțin posibil comenzi și schimbarea datelor minime. Respectarea acestei cerințe va permite cel mai eficient mod de a asigura funcționarea simultană a mai multor utilizatori cu date.
blocarea
Creșterea performanței atunci când se utilizează tranzacții mici, datorită faptului că, atunci când serverul de tranzacție impune datele de blocare.
Aceasta blocare a numit-o limită de timp pentru executarea anumitor operațiuni de prelucrare a datelor. Blocarea poate fi aplicată ca o linie separată a tabelului, și pe întreaga bază de date. blocare de control pe cele mai bune oferte server cu managerul de blocare, supravegherea aplicării și soluționarea conflictelor lor. Tranzacțiile și de blocare sunt strâns legate între ele. Impună blochează tranzacții asupra datelor, pentru a se asigura că cerințele ACID. Fără a se blochează mai multe tranzacții ar modifica aceleași date.
Blocarea este o metodă de control a procesului paralel. în care obiectul de bază de date nu poate fi modificat fără a cunoaște tranzacției. și anume există blocarea accesului la obiectul altor tranzacții. ceea ce este exclus schimbarea imprevizibilă în obiectul. Există două tipuri de încuietori:
- înregistrare de blocare - tranzacție linie blochează tabelele, astfel încât o altă cerere de tranzacție la aceste linii vor fi anulate;
- citește blocare - încuietori tranzacție linie, astfel încât o solicitare de la o altă tranzacție pentru dezactivarea înregistrării acestor linii vor fi respinse, și un sistem de blocare de citire - adoptat.
Baza de date este utilizat pentru protocolul de acces la date care să evite problemele de concurenta. Esența ei este după cum urmează:
- tranzacție. Rezultatul din care linie de date în tabel este recuperarea acesteia, este obligată să impună un sistem de blocare de citire de pe acel rând;
- tranzacție. destinate modificărilor șirului de date îi impune un sistem de blocare de scriere;
- Dacă blocarea solicitată pe un rând este respins din cauza blocare existente. atunci tranzacția este în așteptare până când până la înlăturarea de blocare;
- Blocarea de scriere este reținut până la sfârșitul tranzacției.
Soluție pentru procesare paralelă a bazei de date a problemei este că rândurile din tabel sunt blocate, iar tranzacția ulterioară. modificarea acestor linii sunt respinse și transferate în modul de așteptare. În legătură cu proprietatea de menținere a integrității tranzacțiilor de baze de date sunt unități de izolare utilizator corespunzătoare. Într-adevăr, în cazul în care fiecare sesiune interacționează cu tranzacția de bază de date este realizată. utilizatorul începe cu faptul că face apel la o stare consistentă a bazei de date - starea în care ar putea fi, chiar dacă utilizatorul lucra doar cu ea.
În cazul în care sistemul de management al bazei de date nu este pusă în aplicare, mecanisme de blocare, următoarele probleme de acces simultane pot apărea în timp ce citirea sau modificarea aceleași date multiple utilizatori:
- problema ultimei modificări apare atunci când mai mulți utilizatori modifica același rând în funcție de valoarea sa inițială; atunci datele vor fi pierdute, deoarece fiecare tranzacție ulterioară suprascrie modificările efectuate de cel precedent. Din această situație este Modificările secvențiale;
- problema lecturii „murdar“ este posibilă în cazul în care utilizatorul efectuează operații complexe de prelucrare a datelor, care necesită mai multe modificări de date înainte ca acestea vor avea de stat în mod logic adevărat. Dacă în timpul schimbării de date un alt utilizator le va citi, se poate ca el va primi o informație în mod logic incorecte. Pentru a evita astfel de probleme, ar trebui să producă o citire a datelor după toate modificările;
- Onetime problemă de citire este rezultatul unei tranzacții de citire repetată a acelorași date. În timpul executării primei tranzacții, celălalt poate face modificări datelor, astfel încât atunci când re-lectură prima tranzacție primesc deja un set diferit de date, ceea ce duce la o încălcare a integrității lor sau inconsistență logică;
- citește problema fantomă apare după o tranzacție preia datele din tabel, iar celelalte inserțiile sau șterge un rând înainte de prima este finalizată. Selectate din valorile din tabel sunt incorecte.
Pentru a rezolva problemele de mai sus într-un spațiu special proiectat patru standard de bloc de nivel definit. Nivelul de izolare tranzacție determină dacă alte (rival) pentru a face modificări la datele tranzacției modificate de tranzacție. și dacă tranzacția curentă pentru a vedea modificările efectuate de tranzacții simultane. și vice-versa. Fiecare nivel sprijină cerințele anterioare și de a impune restricții suplimentare:
- Nivelul 0 - interzicerea „contaminare“ a datelor. Acest nivel este necesar pentru a modifica datele ar putea fi doar o singură tranzacție; în cazul în care este necesară o altă tranzacție pentru a schimba aceleași date, acesta trebuie să aștepte finalizarea primei tranzacții;
- Nivelul 1 - interdicția de a citi „murdar“. În cazul în care tranzacția începutul datelor de schimbare, atunci nici o altă tranzacție le poate citi înainte de finalizarea primei;
- Nivelul 2 - interzicerea lecturi irepetabilă. În cazul în care o tranzacție citește datele pe care nici o altă tranzacție nu va fi în măsură să le schimbe. Astfel, în a doua lectură, acestea vor fi în stare inițială;
- Nivelul 3 - interzicerea fantomelor. În cazul în care tranzacția accesează date, atunci nici o altă tranzacție poate adăuga un nou sau șterge un rând existent, care poate fi citit în timpul tranzacției. Punerea în aplicare a acestui strat se realizează blocarea folosind intervalul de blocare a tastelor. O astfel de blocare nu se aplică la rândul specific al mesei, și pe linia de a satisface o condiție logică specifică.