Sobes.tech
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:

  1. Read Uncommitted (Citire neconfirmată): Cel mai de jos nivel. O tranzacție poate citi modificări neconfirmate ale altor tranzacții (citire murdară).
  2. Read Committed (Citire confirmată): Tranzacția poate citi doar datele care au fost confirmate de alte tranzacții. Evită "citirea murdară".
  3. 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".
  4. 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.