Sobes.tech
Junior — Middle

Ce metode de baze de date asigură protecție împotriva condițiilor de cursă?

sobes.tech AI

Răspuns de la AI

Pentru a proteja împotriva condițiilor de cursă în bazele de date, se utilizează următoarele metode:

  • Transacții și blocări: bazele de date aplică blocări la nivel de rând, pagină sau tabel pentru a preveni modificările simultane ale aceluiași set de date.
  • Izolarea tranzacțiilor: nivelurile de izolare (Read Uncommitted, Read Committed, Repeatable Read, Serializable) reglementează vizibilitatea modificărilor între tranzacții, reducând probabilitatea conflictelor.
  • Blocarea optimistă: la actualizarea datelor, se verifică dacă acestea s-au schimbat de la citire (de exemplu, folosind o versiune sau un timestamp). Dacă s-au schimbat, operațiunea este anulată.
  • Blocarea pesimistă: datele sunt blocate imediat la citire pentru a preveni modificările de către alte tranzacții.

Exemplu de blocare optimistă folosind versiunea înregistrării:

// Presupunem că există un câmp Version în tabel
var entity = dbContext.Entities.Find(id);
var currentVersion = entity.Version;

// Modificăm datele
entity.Name = "Nume Nou";

// La salvare, verificăm dacă versiunea s-a schimbat
try {
    dbContext.SaveChanges();
} catch (DbUpdateConcurrencyException) {
    // Gestionarea conflictului — datele au fost modificate de un alt proces
}