Welche Kriterien bestimmen die Wahl zwischen Optimistic Locking und Pessimistic Locking in hochkonkurrenten Datenbankumgebungen?

Die Entscheidung zwischen Optimistic und Pessimistic Locking basiert primär auf der erwarteten Konfliktrate und der Dauer der Transaktionen. Bei Optimistic Locking gehen wir davon aus, dass Kollisionen selten auftreten. Wir implementieren dies über eine Versionsspalte oder einen Zeitstempel. Erst beim Schreibvorgang prüfen wir, ob der Datensatz seit dem Lesen verändert wurde. Schlägt diese Prüfung fehl, muss die Anwendung den Vorgang wiederholen.

Pessimistic Locking setzt auf Prävention. Wir sperren den Datensatz bereits beim ersten Zugriff (z. B. via SELECT ... FOR UPDATE), sodass andere Prozesse warten müssen, bis die Transaktion abgeschlossen ist. Dies verhindert Konflikte vollständig, erhöht jedoch das Risiko von Deadlocks und reduziert den Gesamtdurchsatz.

Im Bereich Data Engineering analysieren wir diese Trade-offs anhand folgender Kriterien:

KriteriumOptimistic LockingPessimistic Locking
KonfliktrateNiedrig (seltene Überschneidungen)Hoch (häufige gleichzeitige Zugriffe)
RessourcenGeringer Overhead (keine Locks)Hoher Overhead (Lock-Management)
TransaktionsdauerBeliebig / LangKurz (Vermeidung von Blockaden)
StrategieDetection (Erkennung nach dem Fakt)Prevention (Verhinderung im Vorfeld)
AuswirkungMögliche Retries bei KonfliktenMögliche Wartezeiten / Deadlocks

Zusätzlich bewerten wir die User Experience und die Systemlast. Optimistic Locking kann zu Frustration führen, wenn Nutzer ihre Eingaben aufgrund eines Versionskonflikts beim Speichern verlieren. Pessimistic Locking hingegen führt zu einer gefühlten Verlangsamung des Systems, da Threads auf die Freigabe von Sperren warten. Bei extrem hoher Last können häufige Retries im optimistischen Modell die CPU-Auslastung stärker steigern als das Warten im pessimistischen Modell.

Wir empfehlen in modernen, verteilten Systemen grundsätzlich den Einsatz von Optimistic Locking, da die Skalierbarkeit durch das Vermeiden physischer Sperren deutlich höher ist. Pessimistic Locking sollte nur in Ausnahmefällen eingesetzt werden, wenn die Kosten eines fehlgeschlagenen Schreibvorgangs – etwa bei kritischen Finanztransaktionen – die Kosten der Sperrverwaltung und die damit verbundene Latenz übersteigen.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt