Introducere în tranzacții în SQL
O tranzacție în SQL este cunoscută în general ca efectuarea plăților (trimitere, primire, cumpărare etc.), dar când vine vorba de câmpurile tehnice, atunci este modalitatea de a actualiza unitatea logică de informații din baza de date.
O tranzacție este implementarea uneia sau a mai multor modificări în baza de date. Putem grupa mai multe interogări SQL și să rulăm simultan într-o tranzacție. Toate interogările SQL fie vor fi executate dintr-o singură dată, fie toate vor fi redate. Acesta ar avea doar două rezultate fie succesul, fie eșecul.
Tranzacția odată comisă nu poate fi o returnare, Poate fi returnată numai dacă tranzacția nu este angajată. MYSQL comite automat modificările aduse bazei de date dacă toate întrebările sunt executate cu succes. Pentru a comite în mod explicit modificările în baza de date, mai întâi, trebuie să dezactivați auto-angajarea prin intermediul comenzii -
Sintaxă: SET autocommit = 0;
Proprietățile tranzacției
Următoarele sunt proprietățile importante ale tranzacțiilor, fiecare tranzacție trebuie să urmeze aceste proprietăți
1. Atomicitate
O tranzacție trebuie să fie atomică, manipularea medie a datelor trebuie finalizată pentru o anumită unitate logică. Această proprietate asigură că schimbările de date au avut loc complet altfel, returnarea tranzacției.
2. Coerența
Odată încheiată tranzacția, toate înregistrările disponibile vor fi consecvente pe toată durata tranzacției. Această proprietate asigură faptul că proprietatea bazei de date a fost schimbată în stare după un angajament de succes sau nu.
3. Izolarea
Izolarea se referă la schimbările de date la o anumită unitate logică nu ar trebui să afecteze o altă unitate. Permite executarea unei tranzacții în mod independent.
4. Durabilitatea
Modificările efectuate în timpul tranzacțiilor ar trebui să fie permanente în sistem. În cazul unei erori de sistem, această proprietate asigură, de asemenea, că schimbările de date au loc sau nu.
Proprietatea de mai sus a tranzacției este cunoscută și ca proprietate ACID.
Pașii tranzacției
1. Începeți
O tranzacție poate apărea în mai multe execuții SQL, dar toate SQL ar trebui să fie executate simultan. Dacă oricare dintre tranzacții eșuează, întreaga tranzacție va fi returnată. Declarația pentru începerea tranzacției este „START TRANSACTION”. Începe acronimul pentru START TRANSACTION.
Sintaxă: START TRANSACTION;
2. Angajează
Angajamentele reflectă permanent modificările aduse bazei de date. Declarația pentru începerea tranzacției este „COMMIT”.
Sintaxa: COMMIT;
3. Rollback
Rollback este folosit pentru a reveni la modificări, adică înregistrarea nu va fi modificată, ar fi în starea anterioară. Declarația pentru începerea tranzacției este „ROLLBACK”.
Sintaxa: ROLLBACK;
4. Punct de salvare
SAVEPOINT este, de asemenea, o declarație de tranzacție. Această declarație a fost utilizată pentru a crea un punct de stocare în sistem, astfel încât operația ROLLBACK să poată atinge starea punctului de salvare.
5. Eliberați punctul de salvare
RELEASE SAVEPOINT este o declarație pentru a elibera punctul de economisire și memoria consumată de sistem în crearea unui punct de salvare.
Sintaxa: RELEASE SAVEPOINT SP
Note - SP este numele punctului de salvare atunci când acest punct de salvare a fost creat înainte de începerea tranzacției.
6. Setați tranzacția
Comanda SET TRANSACȚIE este utilizată pentru a specifica atributul tranzacției, cum ar fi tranzacția dată este o sesiune de numai citire sau citire-scriere.
Sintaxa : SET TRANSACȚIE (CITIȚI SCRIS | CITEȘTE NUMAI);
Tranzacția este utilizată pentru a efectua modificări complexe din baza de date. Este utilizat în principal în schimbările de informații legate de servicii bancare într-o bază de date relațională.
Tranzacția este suportată de motorul MYSQL InnoDB. În mod implicit, auto-angajarea rămâne activată, de aceea, ori de câte ori orice executare SQL are loc automat după executarea comitelor.
Tranzacții folosind SQL
Exemplul # 1
Tranzacție bancară: Un cont debitat pentru suma de 50000 de la persoană Un cont de economisire și a depus această sumă în contul de împrumut al A.
Start tranzacție: această tranzacție de pornire va converti toate interogările SQL într-o singură unitate de tranzacție.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Această interogare SQL deduce suma din soldul contului existent.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Această interogare SQL adaugă suma în contul împrumutului utilizatorului.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Această interogare SQL introduce o nouă înregistrare în tabelul cu detaliile tranzacției, acest tabel conține detaliile tuturor tranzacțiilor utilizatorilor. Dacă toată interogarea este executată cu succes, comanda COMMIT trebuie să fie executată, deoarece modificările trebuie să fie stocate permanent în baza de date.
Commit: Această declarație de angajare salvează modificările invocate de o tranzacție în baza de date. Dacă oricare dintre tranzacții eșuează în timpul execuției, atunci comanda ROLLBACK ar trebui să fie executată pentru a reveni tranzacția completă
Rollback: rollback are loc odată ce orice interogare eșuează în timpul executării.
Exemplul # 2
Tranzacții de inventar: în tabelul de articole date 6 articole sunt disponibile.
Execută următoarea declarație START TRANSACTION pentru a începe tranzacția.
Acum executați comanda SET AUTOCOMMIT = 0 ; pentru a dezactiva comiterea automată
Acum executați următoarea declarație pentru a elimina înregistrarea din tabelul de articole
Acum înregistrarea disponibilă în tabel este de 4 adică înregistrări eliminate temporar din elementele din tabel
Acum, executând comanda ROLLBACK pentru a reveni la modificări, înregistrarea ștersă va fi disponibilă în elementele din tabel, ca mai înainte de începerea tranzacției.
Din nou, dacă aplicați aceeași operațiune de ștergere, atunci operațiunea COMMIT după ce se schimbă va fi salvată permanent în baza de date
Acum putem vedea că după comanda ROLLBACK încă, înregistrarea era într-o stare nouă, înseamnă că, odată ce operațiunea COMMIT efectuată, modificările nu pot fi returnate, deoarece face permanent modificări în baza de date;
Beneficiile utilizării Tranzacției în SQL
a) Utilizarea Tranzacției îmbunătățește performanța , atunci când introduceți 1000 de înregistrări folosind tranzacții în acest caz, timpul efectuat ar fi mai mic decât cel normal. Ca în tranzacția normală, de fiecare dată COMMIT ar avea loc după fiecare execuție de interogare și ar crește timpul de execuție de fiecare dată, în timp ce în tranzacție nu este nevoie să executați instrucțiunea COMMIT după fiecare interogare SQL. COMMIT la sfârșit ar reflecta toate modificările aduse în baza de date permanent simultan. De asemenea, dacă utilizați tranzacția, revenirea modificărilor ar fi mult mai ușoară decât tranzacția normală. ROLLBACK va reveni toate modificările simultan și va menține sistemul în starea anterioară.
b) Tranzacția asigură integritatea datelor în baza de date relațională. Cea mai mare parte a bazei de date folosește mai multe tabele pentru a menține datele și, în timp ce face actualizări, pot exista modificări în mai multe tabele în acel moment, dacă oricare dintre interogările SQL nu reușesc, atunci tranzacția ar menține datele neschimbate.
Concluzie
Utilizarea Tranzacțiilor este o practică optimă în actualizarea informațiilor pentru o unitate logică dintr-o bază de date relațională. Pentru implementarea tranzacțiilor, motorul bazei de date ar trebui să sprijine tranzacția, cum ar fi motorul InnoDB. Tranzacția, ca unitate a instrucțiunilor SQL, poate fi returnată simultan folosind o singură instrucțiune ROLLBACK. Tranzacția asigură integritatea datelor și îmbunătățește performanța bazei de date.
Articole recomandate
Acesta este un ghid pentru Tranzacții în SQL. Aici discutăm introducerea, proprietățile, pașii, exemple de tranzacții în SQL împreună cu avantajele utilizării tranzacției în SQL.
- Ce este SQL
- Instrumente de management SQL
- Vizualizări SQL
- Tipuri de uniri în SQL Server
- Top 6 tipuri de uniri în MySQL cu exemple