Show TOC

HintergrundWirkungsweise von Optimistischen Sperren Dieses Dokument in der Navigationsstruktur finden

 

Optimistische Sperren zeichnen sich dadurch aus, dass konkurrierende Sperren zunächst miteinander verträglich sind und sich daher nicht gegenseitig ausschließen. Ob eine Sperrkollision stattgefunden hat, wird erst nachträglich festgestellt. Sie äußert an einer für den Sperreigentümer feststellbaren fremden Änderung an der Sperre, wodurch die optimistische Sperre invalidiert wird.

Ablauf

Eine Datenänderung mit optimistischen Sperren läuft in 2 Phasen ab:

Phase 1
  1. Prüfung, ob die optimistische Sperre gesetzt werden kann, d.h. keine fremde exklusive Sperre besteht

  2. Setzen der optimistischen Sperre

  3. Lesen der Daten

Die Sperre schützt nicht gegen fremde Änderungen der Daten, hilft aber, sie zu erkennen.

Phase 2

Diese Phase läuft ab, wenn die gelesenen Daten geändert werden sollen. Voraussetzung dazu ist, dass die ursprünglich gelesenen Daten nicht verändert wurden. Der Ablauf im einzelnen:

  1. Überprüfung der Konsistenz von gelesenen Daten und optimistischer Sperre

  2. Prüfung, ob Umwandlung der optimistischen in eine exklusive Sperre mit einer bestehenden Sperre kollidieren würde

  3. Propagierung der Änderung an fremde Eigentümer optimistischer Sperren durch Invalidierung der fremden optimistischen Sperren.

  4. Umwandlung der optimistischen in eine exklusive Sperre.

  5. Ausführung der Änderung selbst; sie wird allgemein sichtbar.

  6. Freigeben der Sperre

Die Schritte 1-4 müssen atomar ablaufen, d.h. entweder komplett oder gar nicht ausgeführt werden. Die Datenänderung führt dazu, dass in fremden Transaktionen die Prüfung in Schritt 2. eine Kollision ergibt und somit die Phase 2 nicht fortgesetzt werden kann. Es muss eine Konfliktlösungs-Strategie verfolgt werden.

Folgende Grafik stellt den Ablauf dar.

Die Abbildung wird im Begleittext erläutert.

Optimistische Sperre in einer SAP-Transaktion

Konflikte

Es gibt folgende Möglichkeiten eines Konfliktes:

  • Konflikt in Phase 1

    Der Versuch, die optimistische Sperre zu setzen, scheitert, weil das Objekt schon von einem anderen Eigentümer exklusiv (oder vom selben Eigentümer nicht-kumulativ) gesperrt ist. Der Benutzer kann dann nicht in den Änderungsmodus wechseln.

  • Konflikte in Phase 2

    • Die optimistische Sperre wurde gesetzt, doch beim Versuch, die (geänderten) Daten zu sichern, stellt sich heraus, dass eine andere optimistische Sperre schon in eine exklusive umgewandelt wurde und dabei die optimistische Sperre dieser Transaktion entfernt hat.

    • Die optimistische Sperre ist noch gültig, aber es existiert eine fremde Lesesperre (Sperrmodus S) oder eine an den Verbucher vererbte eigene Exklusivsperre, die mit dem Umwandeln der optimistischen Sperre in eine exklusive Sperre kollidieren würde.