Optimistisches Sperren Optimistisches Sperren wird meist basierend auf einem Mechanismus zur Aufzeichnung von Datenversionen implementiert, im Allgemeinen durch Hinzufügen eines Felds „Version“ zur Datenbanktabelle. Beim Einlesen von Daten wird die Versionsnummer mit ausgelesen, bei einem späteren Update wird die Versionsnummer um eins erhöht. Zu diesem Zeitpunkt werden die Versionsdaten der übermittelten Daten mit den aktuellen Versionsinformationen des entsprechenden Datensatzes in der Datenbanktabelle verglichen. Wenn die Versionsnummer der übermittelten Daten größer als die aktuelle Versionsnummer der Datenbanktabelle ist, werden sie aktualisiert, andernfalls gelten sie als abgelaufene Daten. Beispiel: Eine Bestellung aufgeben: Produktinformationen abfragen. auswählen (Menge, Version) von t_goods wobei id = #{id} Generieren Sie Bestellungen auf Grundlage von Produktinformationen. Verringern Sie die Artikelmenge um 1. t_goods aktualisieren eingestellte Menge = Menge - 1 wobei id = #{id} und version = #{version} Pessimistische Sperre Die pessimistische Sperre wird durch den von der Datenbank bereitgestellten Sperrmechanismus implementiert. Sowohl gemeinsam genutzte Sperren als auch exklusive Sperren in MySQL sind pessimistische Sperren. Standardmäßig werden durch das Hinzufügen, Löschen und Ändern von Datenbanken exklusive Sperren hinzugefügt, während durch Abfragen keine Sperren hinzugefügt werden. Gemeinsame Sperre (Lesesperre) Eine gemeinsame Sperre bedeutet, dass mehrere verschiedene Transaktionen die gleiche Sperre für eine Ressource gemeinsam nutzen. Indem Sie einer Ressource ein gemeinsam genutztes Schloss hinzufügen, können Sie die Ressource selbst lesen und auch andere können die Ressource lesen (Sie können auch ein weiteres gemeinsam genutztes Schloss hinzufügen, d. h. das gemeinsam genutzte Schloss teilt mehrere Speicher), es kann jedoch nicht geändert werden. Wenn Sie es ändern möchten, müssen Sie warten, bis alle gemeinsam genutzten Sperren freigegeben sind. Syntax: Zum Beispiel: Fenster 1: Fügen Sie einem Datenelement in einer unvollendeten Transaktion eine gemeinsame Sperre hinzu. BEGINNEN; Wählen Sie * aus t_red_packet, wobei id = 1 im Freigabemodus gesperrt ist. Fenster 2 fügt denselben Daten eine gemeinsame Sperre hinzu und die Sperre ist erfolgreich. Wählen Sie * aus t_red_packet, wobei id = 1 im Freigabemodus gesperrt ist. Beim Aktualisieren AKTUALISIEREN Sie t_red_packet SET Benutzer-ID = 2 Exklusive Sperre (Schreibsperre) Eine exklusive Sperre bedeutet, dass für mehrere unterschiedliche Transaktionen nur eine Sperre für dieselbe Ressource vorhanden sein kann. Durch das Hinzufügen einer exklusiven Sperre zu einer Ressource können Sie Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge an ihr durchführen, andere können sie jedoch nicht sperren, geschweige denn Hinzufügungs-, Lösch- und Änderungsvorgänge durchführen. Syntax: Fenster 1: In einer nicht abgeschlossenen Transaktion wird einem Datenelement eine exklusive Sperre hinzugefügt. BEGINNEN; Wählen Sie * aus t_red_packet, wobei id = 1 für Update ist. Fenster 1, Zeilendaten erfolgreich aktualisiert. AKTUALISIEREN Sie t_red_packet SET Benutzer-ID = 2 Fragen Sie in Fenster 2 die Datenzeile ab und Sie können sie finden. Wählen Sie * aus t_red_packet, wobei id = 1 ist. Fenster 2 sperrt die Daten und zeigt die Meldung Wählen Sie * aus t_red_packet, wobei id = 1 für Update ist. Zusammenfassend bedeutet eine gemeinsame Sperre, dass alle gemeinsam lesen und die Sperre gemeinsam nutzen, aber niemand die gesperrten Daten ändern kann. Eine exklusive Sperre bedeutet, dass ich sie nur ändern möchte, Sie sie lesen können, aber Sie können sie nicht sperren oder die Daten ändern. Zeilensperre Mit der Zeilensperre wird eine Datenzeile gesperrt. Tabellensperre Eine Tabellensperre dient zum Sperren einer Tabelle. 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. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: So erstellen Sie Ihren eigenen privaten Nexus-Server unter Linux
>>: Spezifische Verwendung der Schnittstelle wx.getUserProfile im Applet
1. Stoppen Sie den MySQL-Dienst in der Befehlszei...
Bei der Replikation werden die DDL- und DML-Opera...
1. MySQL herunterladen URL: https://dev.mysql.com...
Ursachen und Folgen 1. Wenn Sie den Ansible-Befeh...
Hallo zusammen, ich bin Tony, ein Lehrer, der nur...
Inhaltsverzeichnis 1 Aktuellen Datenbankinhalt ei...
Vorwort Es gibt viele Möglichkeiten, in CSS horiz...
1 Übersicht System CentOS8, verwenden Sie httpd, ...
Lied: SimSun Fett: SimHei Microsoft YaHei: Micros...
EXPLAIN zeigt, wie MySQL Indizes verwendet, um Au...
Wenn Sie Docker für die Entwicklung im großen Maß...
Inhaltsverzeichnis Vorwort 1. Stellen Sie das Ins...
CSS-Medienabfragen haben ein sehr praktisches Sei...
Inhaltsverzeichnis Cache Klassifizierung des Cach...
Notieren Sie die Installations- und Konfiguration...