Pessimistische Sperre Pessimistische Sperre, betrachtet die Daten als pessimistisch. Wenn wir die Daten abfragen, fügen wir eine Sperre hinzu. Verhindern Sie, dass andere Threads Manipulationen vornehmen, bis sie die Sperre erhalten. Als Beispiel sei die folgende Tabelle genannt. Status=1 bedeutet, dass die Bestellung aufgegeben werden kann, und Status=2 bedeutet, dass die Bestellung nicht aufgegeben werden kann. Wenn während des parallelen Prozesses zwei Benutzer gleichzeitig den Status = 1 prüfen, können zwar beide Benutzer logischerweise neue Bestellungen hinzufügen, dies führt jedoch zu einem Überverkauf des Produkts. Das folgende Beispiel CREATE TABLE `Waren` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `status` tinyint(4) DEFAULT NULL, `version` int(11) DEFAULT NULL, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 INSERT INTO demo.goods (ID, Name, Status, Version) VALUES (1, „Test“, 1, 1); Ausführung von session1 setze Autocommit=0; beginnen; wählen * von Waren, wobei ID=1 und Warenstatus=1 für Aktualisierung; Warensatzstatus aktualisieren=2, wobei ID=1; session2 Ausführung beginnen; Wählen Sie * aus Waren mit ID=1 für Aktualisierung; Zu diesem Zeitpunkt ist Sitzung 2 blockiert, da sich die Sperre noch in Sitzung 1 befindet und die Sperre daher immer wartet. Wenn session1 nicht übermittelt wird, wird session2 nach einer bestimmten Zeit unterbrochen und die Verbindung getrennt und meldet
Die spezifische Wartezeit für die Sperre kann durch Festlegen des Parameters innodb_lock_wait_timeout gesteuert werden. Wenn der Commit-Vorgang zu diesem Zeitpunkt in Sitzung1 ausgeführt wird, erhält Sitzung2 die Abfrageergebnisse und die Sperre wird an Sitzung2 vergeben. Wir können auch Status wie „innodb_row_lock_%“ anzeigen; Um weitere Informationen zur Sperre anzuzeigen. Optimistisches Sperren Optimistisches Sperren unterscheidet sich vom pessimistischen Sperren. Optimistisches Sperren wird durch ein eigenes Programm und nicht durch mySql selbst implementiert. Optimistisches Sperren sperrt die Abfrage nicht und überprüft beim Aktualisieren nur die Versionsnummer. Wenn wir beispielsweise die Tabelle „goods“ abfragen und feststellen, dass die Version 1 ist, dann wird SQL beim Aktualisieren dieser Tabelle Wählen Sie * aus Waren mit ID=1; Warensatzstatus aktualisieren=2, Version=Version+1 wobei ID=1 und Version=1; Die Version ist hier die Versionsnummer zum Zeitpunkt der Abfrage und jede Änderung führt zu Version+1. Wenn die Versionsnummern nicht übereinstimmen, ist das Update nicht erfolgreich. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
>>: Detaillierte Beispiele für die Ausführung von Zabbix-Remotebefehlen
Inhaltsverzeichnis 1. Einleitung 2. Installation ...
Nginx-Verkehrskontrolle Die Ratenbegrenzung ist e...
Ich glaube, jeder ist mit Datenbankindizes vertra...
yum install httpd php mariadb-server –y Notieren ...
Inhaltsverzeichnis Vorwort Vorbereitende Vorberei...
Vorwort Bisher waren statische IPs, die über Pipe...
Inhaltsverzeichnis 1. Installationsumgebung 2. In...
Erstens: Stellen Sie zunächst sicher, dass die Ser...
In den vorherigen drei Artikeln wurden gängige Si...
Verwenden Sie JS, um einen einfachen Rechner für ...
Die folgende Abbildung zeigt die Browser-Anzeiger...
Nachdem ich meinen Computer kürzlich neu installi...
Das zeitgenössische visuelle Webdesign hat drei vö...
Wirkungsdiagramm: Gesamtwirkung: Video wird gelad...
Inhaltsverzeichnis 1. Erstellen Sie die Betriebsu...