Die Select-Abfrageanweisung führt nicht zu einer Sperre, aber Select .......for Update führt zusätzlich zu seiner Abfragefunktion eine Sperre aus, und es handelt sich um eine pessimistische Sperre. Ob eine Zeilensperre oder eine Tabellensperre hinzugefügt wird, hängt davon ab, ob der Index/Primärschlüssel verwendet wird. Wenn kein Index/Primärschlüssel vorhanden ist, handelt es sich um eine Tabellensperre, andernfalls um eine Zeilensperre. verifizieren:Tabelle SQL erstellen //id ist der Primärschlüssel //name ist der eindeutige Index CREATE TABLE `user` ( `id` INT ( 11 ) NICHT NULL AUTO_INCREMENT, `name` VARCHAR(255) DEFAULT NULL, `Alter` INT ( 11 ) DEFAULT NULL, `code` VARCHAR(255) DEFAULT NULL, PRIMÄRSCHLÜSSEL ( `id` ), SCHLÜSSEL `idx_age` ( `age` ) MIT BTREE ) ENGINE = INNODB AUTO_INCREMENT = 1570068 STANDARD-CHARSET = utf8 Sie müssen die automatische Übermittlung deaktivieren und auf manuelle Übermittlung umstellen, indem Sie @@autocommit=0; festlegen. 0 steht für manuelle Übermittlung, 1 für automatische Übermittlung. Kombiniert mit der BeispielüberprüfungBeispiel 1: Verwenden Sie die Primärschlüssel-ID als Abfragebedingung und starten Sie dann eine weitere Transaktion, um die Daten zu aktualisieren. Die Aktualisierung wird blockiert und gesperrt, wodurch die abzufragenden Zeilendaten mit der ID 1 gesperrt werden. Abbildung 1 zeigt die erste Transaktion, und es wird keine Transaktion festgeschrieben Abbildung 2 zeigt die zweite Transaktion, die beim Aktualisieren von Daten blockiert ist. Abbildung 3 zeigt die zweite Transaktion, bei der ein Fehler auftritt, weil die Sperre längere Zeit nicht erhalten werden kann. Beispiel 2: Wir öffnen eine Transaktion, um weitere Daten mit der ID 2 zu aktualisieren. Beispiel 3 (Index): Als die Tabelle erstmals erstellt wurde, wurde ein eindeutiger Index für das Alter erstellt. Beispiel 4: Verwenden Sie gemeinsame Feldcodes für den Betrieb In einer anderen Transaktion aktualisiere ich ein weiteres Datenelement. Wenn meine Aktualisierung erfolgreich ist, wird die Zeile gesperrt. Wenn sie fehlschlägt, wird die Tabelle gesperrt. Ergebnis: Wenn die Abfragebedingung einen Index oder Primärschlüssel verwendet, führt die Auswahl von ..... für die Aktualisierung eine Zeilensperre aus. Wenn es sich um ein normales Feld handelt (kein Index/Primärschlüssel), wird durch Auswahl von ..... zum Aktualisieren die Tabelle gesperrt. Dies ist das Ende dieses Artikels über die Interviewfrage „ob Select for Update die Tabelle oder die Zeile sperrt“. Weitere relevante Select for Update-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Beispiel für die Implementierung des TikTok-Textschütteleffekts mit CSS
>>: 【HTML-Element】Detaillierte Erklärung des Tag-Textes
Die Wiederverwendung von Code in Vue liefert uns ...
Die Tags dd und dt werden für Listen verwendet. N...
Szenario So rendern Sie Listen mit bis zu 10.000 ...
In diesem Artikelbeispiel wird der spezifische Co...
Heute Morgen hatte ich vor, mit Wampserver eine P...
Die bedingten Kommentare des Internet Explorers s...
Inhaltsverzeichnis A. Docker-Bereitstellung des S...
1. Optimieren Sie die Nginx-Parallelität [root@pr...
Inhaltsverzeichnis 1. Was ist virtueller Dom? 2. ...
Vue-Datenbindungsprinzip in beide Richtungen, abe...
Inhaltsverzeichnis 1 Indikatoren im Stresstest 1,...
Was ist WSL Zitat aus der Baidu-Enzyklopädie: Das...
Inhaltsverzeichnis Vorwort HTTP HTTP-Server Datei...
CSS-Vars-Ponyfill Bei der Verwendung von CSS-Vari...
Nginx-Optimierung --- Versionsnummer und Cache-Ze...