Zwei Fälle:1. Mit Index 2. Ohne Index Voraussetzungen:Methode: Verwenden Sie die Befehlszeile zur Simulation 1. Da MySQL Transaktionen standardmäßig automatisch festschreibt, müssen Sie zunächst prüfen, ob Ihre aktuelle Datenbank Transaktionen automatisch festgeschrieben hat. Befehl: select @@autocommit; Die Ergebnisse sind wie folgt: +--------------+ | @@autocommit | +--------------+ | 0 | +--------------+ Wenn der Wert 1 ist, führen Sie den Befehl aus: set autocommit = 0; set, um automatisches Commit zu deaktivieren 2. Das aktuelle Datenbanktabellenformat ist wie folgt tb_user | ERSTELLE TABELLE `tb_user` ( `id` bigint(20) NICHT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, `Telefon` varchar(11) DEFAULT NULL, `Operator` varchar(32) DEFAULT NULL, `gmt_create` Datum/Uhrzeit DEFAULT NULL, `gmt_modified` Datum/Uhrzeit DEFAULT NULL, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 Offensichtlich habe ich außer dem Primärschlüssel keine Indizes hinzugefügt. Praxisbeispiel:1. Kein Index Führen Sie den Befehl „begin“ aus, um die Transaktion zu starten, und führen Sie dann den Befehl „update tb_user set phone=11 where name="c1"“ aus, um die Änderungen vorzunehmen. Bestätigen Sie die Transaktion noch nicht. Öffnen Sie ein weiteres Fenster und führen Sie den Befehl direkt aus: update tb_user set phone=22 where name="c2"; Sie werden feststellen, dass der Befehl hängen bleibt. Wenn die vorherige Transaktion jedoch per Commit übermittelt wird, wird der Befehl normal ausgeführt und beendet, was darauf hinweist, dass die Tabelle gesperrt ist. 2. Fügen Sie dem Namensfeld einen Index hinzu Erstellen Sie den Index Index_Name für tb_user(Name); Setzen Sie dann den Vorgang wie in Schritt 1 fort, d. h. öffnen Sie eine Transaktion und führen Sie update tb_user set phone=11 where name="c1" aus; führen Sie noch kein Commit aus Führen Sie dann einen weiteren Befehl aus: update tb_user set phone=22 where name="c2"; und Sie werden feststellen, dass der Befehl nicht hängen bleibt, was darauf hinweist, dass die Tabelle nicht gesperrt ist. Wenn jedoch ein weiteres Update „tb_user set phone=22 where name="c1";“ dieselbe Zeile aktualisiert, bedeutet dies, dass die Zeile gesperrt ist. 3. Zusammenfassung Wenn kein Index vorhanden ist, wird die Tabelle durch das Update gesperrt. Wenn ein Index hinzugefügt wird, wird die Zeile gesperrt. Dies ist das Ende dieses Artikels darüber, ob Updates in MySQL-Transaktionen die Tabelle sperren. Weitere Informationen zum Sperren der Tabelle durch MySQL-Transaktionsupdates finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: HTML-Auszeichnungssprache - Tabellen-Tag
>>: JS+Canvas zeichnet ein Glücksrad
Inhaltsverzeichnis 1. Baidu-Enzyklopädie 1. MySQL...
Vor kurzem hat ein Dienst einen Alarm ausgelöst, ...
Inhaltsverzeichnis Vorwort: Freundliche Tipps: Va...
Inhaltsverzeichnis Axios-Anfrage Qs-Verarbeitungs...
Installieren Sie nginx Beachten Sie, dass Sie ngi...
Mit der Anweisung „Truncate table“ werden alle Da...
Der folgende Befehl wird häufig verwendet: chmod ...
Inhaltsverzeichnis Vorwort Axios-Installation und...
1. Melden Sie sich bei MySQL an: mysql -u root -h...
Installieren Sie die neueste stabile Version von ...
In diesem Artikel wird der spezifische JavaScript...
Ich habe vor einiger Zeit ein Projekt entwickelt....
Jeder, der es braucht, kann darauf zurückgreifen....
Inhaltsverzeichnis 1. Lösung 1 (UDF) Demo-Fall 2....
Vorwort In vielen MySQL-Test-Szenarien müssen ein...