Es gibt zwei gängige Methoden zur Implementierung optimistischer Sperren, nämlich: 1. Versionsnummernmechanismus 2. CAS-Algorithmus; Unter diesen ist die Implementierung einer optimistischen Sperre über den Versionsnummernmechanismus die klassischste Methode. Der Versionsnummernmechanismus fügt der Datentabelle im Allgemeinen ein Versionsfeld für die Datenbankversionsnummer hinzu.
Implementierungsmethode:
(empfohlenes Lernen:MySQL-Tutorial)
1 . Der Versionsnummernmechanismus
bedeutet im Allgemeinen, dass der Datentabelle ein Versionsfeld für die Datenbankversion hinzugefügt wird, um anzugeben, wie oft die Daten geändert wurden um 1 erhöht.
Zum Beispiel:
Wenn Thread A den Datenwert aktualisieren muss, liest er beim Senden der Aktualisierung natürlich auch den Versionswert, wenn der Versionswert gerade gelesen wurde Nur aktualisieren, wenn die Versionswerte in der aktuellen Datenbank gleich sind. Andernfalls wiederholen Sie den Aktualisierungsvorgang, bis die Aktualisierung erfolgreich ist.
2. CAS-Algorithmus
CAS (Vergleichen und Tauschen) Vergleichen und Tauschen, es gibt drei Operanden, Speicheradresse V, erwarteter Wert B, das zu ersetzende Ziel Sub A.
Wenn der CAS-Befehl ausgeführt wird, vergleicht er, ob die Speicheradresse V und der erwartete Wert B gleich sind. Wenn sie gleich sind, wird A B zugewiesen. (Wenn sie nicht gleich sind, wird der Vergleich durchgeführt wiederholt, bis sie gleich sind.) Die gesamte Vergleichszuweisungsoperation ist eine atomare Operation.
CAS-Nachteile:
(1) Großer Zykluszeitaufwand: Wenn die Speicheradresse V nicht dem erwarteten Wert B entspricht, wird der Vergleich fortgesetzt, bis sie gleich sind; > (2) Nur die atomare Operation einer gemeinsam genutzten Variablen kann garantiert werden.
(3) Wenn eine Variable V beim ersten Lesen den Wert A hat und überprüft wird, ob sie immer noch der Wert ist Wenn wir uns auf die Zuweisung vorbereiten, können wir dies tun. Bedeutet dies, dass sein Wert nicht von anderen Threads geändert wurde? Offensichtlich nicht, da der Wert in diesem Zeitraum möglicherweise auf andere Werte und dann wieder auf A geändert wird. Dann geht die CAS-Operation davon aus, dass sie nie geändert wurde. Dieses Problem wird als „ABA“ der CAS-Operation bezeichnet. Frage;
Das obige ist der detaillierte Inhalt vonEs gibt mehrere gängige Methoden zur Implementierung optimistischer Sperren.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!