Middle
Care sunt tipurile de izolare a tranzacțiilor?
sobes.tech AI
Răspuns de la AI
Izolarea tranzacțiilor determină în ce măsură o tranzacție poate vedea modificările intermediare ale altor tranzacții care rulează în paralel.
Standardul SQL definește patru niveluri de izolare:
- Read Uncommitted (Citire neconfirmată): Cel mai de jos nivel. O tranzacție poate citi modificări neconfirmate ale altor tranzacții (citire murdară).
- Read Committed (Citire confirmată): Tranzacția poate citi doar datele care au fost confirmate de alte tranzacții. Evită "citirea murdară".
- Repeatable Read (Citire repetabilă): Tranzacția garantează că datele citite în timpul tranzacției nu se vor schimba la citiri ulterioare. Evită "citirea murdară" și "citirea nerepetabilă". Pot apărea "fantome".
- Serializable (Serializabil): Cel mai înalt nivel de izolare. Garantează că tranzacțiile paralele se execută ca și cum ar fi secvențiale. Evită toate fenomenele nedorite: "citirea murdară", "citirea nerepetabilă" și "fantome".
Fenomene nedorite în execuția paralelă a tranzacțiilor:
- Dirty Read (Citire murdară): Tranzacția A citește date modificate de tranzacția B, care nu au fost încă confirmate. Dacă tranzacția B revine asupra modificărilor, tranzacția A va lucra cu date incorecte.
- Non-repeatable Read (Citire nerepetabilă): Tranzacția A citește aceleași date de două ori, dar între citiri, tranzacția B confirmă o modificare a acestor date. Ca rezultat, tranzacția A obține valori diferite.
- Phantom Read (Citire fantomă): Tranzacția A execută o interogare care returnează un set de rânduri. Tranzacția B confirmă inserarea sau ștergerea rândurilor care corespund criteriilor interogării A. La reexecutarea aceleiași interogări, tranzacția A obține un set diferit de rânduri.
Tabel rezumat al fenomenelor nedorite după nivelurile de izolare:
| Nivel de izolare | Citire murdară | Citire nerepetabilă | Fantome |
|---|---|---|---|
| Read Uncommitted | Da | Da | Da |
| Read Committed | Nu | Da | Da |
| Repeatable Read | Nu | Nu | Da |
| Serializable | Nu | Nu | Nu |
Alegerea nivelului de izolare influențează performanța și corectitudinea funcționării aplicației. Cu cât nivelul de izolare este mai ridicat, cu atât costurile suplimentare sunt mai mari.