Optimistische und pessimistische Nebenläufigkeitskontrolle
Problem
Alice und Bob wollen dieselbe Produktzeile ändern, deren Preis aktuell 10 € beträgt. Alice wählt 12 €, Bob 15 €. Ihre Zugriffe müssen so koordiniert werden, dass Änderungen vor unbemerktem Überschreiben geschützt sind.
Lösung — Strategien zur Nebenläufigkeitskontrolle
Pessimistisch: Alices Transaktion sperrt die Zeile vor dem Lesen und Ändern. Bob fordert dieselbe Sperre an und wartet. Alice speichert 12 € und bestätigt ihre Transaktion; dadurch wird die Sperre frei. Bob liest anschließend 12 € und entscheidet über seine Änderung. Die Sperre gilt gewöhnlich für die Dauer einer kurzen Datenbanktransaktion.
Optimistisch: Beide lesen 10 € bei Version 7 und bearbeiten unabhängig voneinander. Alice speichert 12 € unter der Bedingung „Version ist noch 7“; die Datenbank erhöht die Version auf 8. Bobs Versuch, 15 € auf Basis von Version 7 zu speichern, wird abgelehnt. Er muss die neuen Daten laden und seine Änderung vor einem erneuten Versuch prüfen. Versionsprüfung und Schreiben geschehen atomar.
Kerngedanke: Pessimistische Nebenläufigkeitskontrolle lässt konkurrierende Änderungen warten; optimistische lehnt Änderungen auf Basis veralteter Versionen ab.