Heim > Datenbank > MySQL-Tutorial > Was ist die Verwendung von for update in MySQL?

Was ist die Verwendung von for update in MySQL?

WBOY
Freigeben: 2022-05-12 15:51:27
Original
5472 Leute haben es durchsucht

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.

Was ist die Verwendung von for update in MySQL?

Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.

Was ist die Verwendung von for update in MySQL? 1. Verwendungsszenarien von for update

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 Aktualisierungen

2. Verwendung für Aktualisierungen:

select * from table where xxx for update
Nach dem Login kopieren

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;
Nach dem Login kopieren
Beispiel 2: (Geben Sie explizit den Primärschlüssel/Index an, wenn kein solcher Datensatz vorhanden ist, keine Sperre)
SELECT * FROM foods WHERE id=-1 FOR UPDATE;
Nach dem Login kopieren

Beispiel 3: (Kein Primärschlüssel/Index, Sperre auf Tabellenebene)

SELECT * FROM food WHERE name='Coder Programming Advanced Notes' FOR UPDATE;

Beispiel 4: (Unklarer Primärschlüssel/Index, Sperre auf Tabellenebene )

SELECT * FROM foods WHERE id<>‘3’ FOR UPDATE;
SELECT * FROM foods WHERE id LIKE ‘3’ FOR UPDATE;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage