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
}