Die Verwendung von „for update“ in MySQL lautet „select * from table where...for update“; die Verwendung von „for update“ kann der Zeile während der Abfrage eine exklusive Sperre hinzufügen kann aber nicht geschrieben oder aktualisiert werden.
Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.
Wenn Sie auf ein Szenario mit hoher Parallelität und hohen Anforderungen an die Datengenauigkeit stoßen, müssen Sie for update verstehen und verwenden. Die Funktion von
for update besteht darin, der Zeile während der Abfrage eine exklusive Sperre hinzuzufügen. Wenn ein Transaktionsvorgang nicht abgeschlossen ist, können andere Transaktionen lesen, aber nicht schreiben oder aktualisieren. Zum Beispiel, wenn es um Geld, Inventar usw. geht. Im Allgemeinen sind diese Vorgänge eine lange Reihe und starten eine Transaktion. Wenn der Bestand beim ersten Lesen 1 ist und ein anderer Prozess den Bestand sofort auf 0 aktualisiert und die Transaktion noch nicht beendet ist, werden weiterhin falsche Daten ausgeführt und es treten Probleme auf. Daher ist es für die Aktualisierung erforderlich, Daten zu sperren, um Datenfehler bei hoher Parallelität zu verhindern. Denken Sie an ein Prinzip: eine Sperre, zwei Beurteilungen, drei Aktualisierungen2. Verwendung für Aktualisierungen:
select * from table where xxx for update
3. Die Sperrtabelle für Aktualisierungen ist standardmäßig auf Zeilenebene eingestellt Wenn es einen explizit angegebenen Primärschlüssel gibt, handelt es sich um eine Sperre auf Zeilenebene. Ansonsten handelt es sich um Tischebene.
Beispiel: Angenommen, die Tabelle „foods“ hat drei Felder: „id“, „name“ und „status“. id ist der Primärschlüssel und „status“ hat einen Index. Beispiel 1: (Geben Sie explizit den Primärschlüssel an, und es gibt diesen Datensatz, Sperre auf Zeilenebene)SELECT * FROM foods WHERE id=1 FOR UPDATE; SELECT * FROM foods WHERE id=1 and name=‘码农编程进阶笔记’ FOR UPDATE;
SELECT * FROM foods WHERE id=-1 FOR UPDATE;
SELECT * FROM foods WHERE id<>‘3’ FOR UPDATE; SELECT * FROM foods WHERE id LIKE ‘3’ FOR UPDATE;
4.for Hinweise zur Aktualisierung
1 für die Aktualisierung gilt nur für InnoDB, und Transaktionen müssen aktiviert sein, damit sie zwischen Beginn und Festschreibung wirksam werden. 2. Um die Tabellensperrsituation für Updates zu testen, können Sie den Befehlsmodus von MySQL verwenden, um zwei Fenster zum Testen zu öffnen. Empfohlenes Lernen:MySQL-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist die Verwendung von for update in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!