Sobes.tech
Junior — Middle

Welche Methoden von Datenbanken gewährleisten Schutz vor Rennbedingungen?

sobes.tech KI

Antwort von AI

Zum Schutz vor Rennbedingungen in Datenbanken werden folgende Methoden verwendet:

  • Transaktionen und Sperren: Datenbanken wenden Sperren auf Zeilen-, Seiten- oder Tabelleneebene an, um gleichzeitige Änderungen derselben Daten zu verhindern.
  • Transaktionsisolation: Die Isolationsstufen (Read Uncommitted, Read Committed, Repeatable Read, Serializable) steuern die Sichtbarkeit von Änderungen zwischen Transaktionen und verringern die Konfliktwahrscheinlichkeit.
  • Optimistische Sperrung: Beim Aktualisieren von Daten wird geprüft, ob sie seit dem Lesen geändert wurden (z.B. mit einer Version oder Zeitstempel). Wenn ja, wird die Operation zurückgesetzt.
  • Pessimistische Sperrung: Daten werden sofort beim Lesen gesperrt, um Änderungen durch andere Transaktionen zu verhindern.

Beispiel für optimistische Sperrung mit Verwendung der Versionsnummer:

// Angenommen, es gibt ein Feld Version in der Tabelle
var entity = dbContext.Entities.Find(id);
var currentVersion = entity.Version;

// Daten ändern
entity.Name = "Neuer Name";

// Beim Speichern prüfen, ob sich die Version geändert hat
try {
    dbContext.SaveChanges();
} catch (DbUpdateConcurrencyException) {
    // Konfliktbehandlung — Daten wurden von einem anderen Prozess geändert
}