Optimistisches Sperren in MySQL: Eine umfassende Erklärung
Optimistisches Sperren ist eine Technik, die in Datenbankverwaltungssystemen verwendet wird, um Datenkonflikte zu verhindern, die auftreten können, wenn Mehrere Benutzer versuchen gleichzeitig, dieselben Daten zu aktualisieren. Obwohl MySQL optimistisches Sperren nicht nativ unterstützt, kann es mithilfe von Standard-SQL-Anweisungen implementiert werden.
Das Konzept verstehen
Optimistisches Sperren basiert auf der Annahme, dass dies bei Daten unwahrscheinlich ist häufig von mehreren Benutzern geändert werden. Anstatt Sperren für die Daten zu erwerben, ermöglicht diese Technik gleichzeitige Aktualisierungen, prüft jedoch auf Konflikte, bevor die Änderungen übernommen werden.
Implementierung in MySQL
Eine Methode zur optimistischen Implementierung Das Sperren in MySQL erfolgt durch Hinzufügen einer Versionsspalte zur Tabelle. Wenn eine Zeile aktualisiert wird, wird die Versionsspalte erhöht. Bevor ein Update festgeschrieben wird, überprüft die Anwendung, ob die aktuelle Versionsnummer mit der Versionsnummer übereinstimmt, die zum Zeitpunkt der Initiierung des Updates in der Zeile gespeichert war. Wenn die Zahlen übereinstimmen, wird das Update festgeschrieben; Andernfalls ist ein Konflikt aufgetreten und die Anwendung muss ihn entsprechend behandeln.
Codebeispiel
Der folgende Codeausschnitt demonstriert optimistisches Sperren mithilfe einer Versionsspalte:
-- Select the row and its version
SELECT val1, val2, version
FROM theTable
WHERE iD = @theId;
-- Calculate new values
-- ...
-- Update the table, checking the version
UPDATE theTable
SET val1 = @newVal1,
val2 = @newVal2,
version = version 1
WHERE iD = @theId
AND version = @oldversion;
-- Check for affected rows
IF @@ROWCOUNT = 1
-- Commit the changes
-- ...
ELSE
-- Handle collision
-- ...
END IF;
Transaktionen vs. Nicht-Transaktionen
Optimistisches Sperren kann mit oder ohne Transaktionen implementiert werden. Die Verwendung von Transaktionen bietet die Möglichkeit, alle Änderungen rückgängig zu machen, wenn eine Kollision auftritt, kann aber auch zu Einschränkungen der Parallelität führen. Nicht-transaktionales optimistisches Sperren basiert auf der Versionsspalte, um Konflikte zu erkennen, und behandelt sie, ohne dass Transaktionen erforderlich sind.
Fazit
Optimistisches Sperren ist nicht integriert Funktion von MySQL, kann aber mit Standard-SQL-Anweisungen implementiert werden. Durch das Hinzufügen einer Versionsspalte zur Tabelle können Anwendungen optimistische Sperren durchführen und Konflikte erkennen, bevor Aktualisierungen festgeschrieben werden, wodurch die Datenkonsistenz in gleichzeitigen Umgebungen sichergestellt wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3