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
Redis ist ein verteilter Cache-Dienst. Caching is...
Was Sie aus Büchern lernen, ist immer oberflächli...
Der Weg vor uns ist immer so schwierig und voller...
Datenbanktabelle A: Tabelle erstellen Task_Desc_T...
Inhaltsverzeichnis Vorwort Umsetzungsideen Implem...
Als ich heute einen Flash-Werbecode schrieb, habe ...
In Tomcat ist JSP nicht verstümmelt, aber HTML-Ch...
Vorwort Kürzlich bin ich bei der Entwicklung eine...
Vorwort: In MySQL wird die Funktion CONCAT() verw...
Inhaltsverzeichnis 1. Vorstellen gemäß der Bestel...
Bei der Migration einer Oracle-Datenbank zu einer...
Dieser Artikel beschreibt die Import- und Exportv...
Nachdem ich das System heute neu installiert hatt...
Im Linux-System können Umgebungsvariablen entspre...
Nehmen wir Windows als Beispiel. Bei Linux ist es...