Im Vorstellungsgespräch wurde ich gefragt, ob select...for update die Tabelle oder die Zeile sperren würde.

Im Vorstellungsgespräch wurde ich gefragt, ob select...for update die Tabelle oder die Zeile sperren würde.

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üfung

Beispiel 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:
  • Erläuterung der MySQL-Transaktionsauswahl für die Aktualisierung und Datenkonsistenzverarbeitung
  • Analyse des Deadlock-Prozesses in der MySQL-Datenbank (zum Aktualisieren auswählen)
  • Anwendungsbeispiele für MySQL-SELECT-FOR-UPDATE-Anweisungen

<<:  Beispiel für die Implementierung des TikTok-Textschütteleffekts mit CSS

>>:  【HTML-Element】Detaillierte Erklärung des Tag-Textes

Artikel empfehlen

Lösung für Fremdschlüsselfehler bei der MySQL-Tabellenerstellung

Datenbanktabelle A: Tabelle erstellen Task_Desc_T...

So verhindern Sie, dass Flash HTML-Div-Elemente abdeckt

Als ich heute einen Flash-Werbecode schrieb, habe ...

WeChat-Applet zum Abrufen eines Schrittdatensatzes für Mobiltelefonnummern

Vorwort Kürzlich bin ich bei der Entwicklung eine...

Zusammenfassung der in MySQL häufig verwendeten Verkettungsanweisungen

Vorwort: In MySQL wird die Funktion CONCAT() verw...

Details zur MySQL-Sicherheitsverwaltung

Inhaltsverzeichnis 1. Vorstellen gemäß der Bestel...

Beispiele für den Import und Export von MySQL-Tabellendaten

Dieser Artikel beschreibt die Import- und Exportv...

Eine kurze Einführung in Linux-Umgebungsvariablendateien

Im Linux-System können Umgebungsvariablen entspre...

So verwenden Sie Nginx zum Erstellen eines statischen Ressourcenservers

Nehmen wir Windows als Beispiel. Bei Linux ist es...