Wird die Tabelle durch ein Update in einer MySQL-Transaktion gesperrt?

Wird die Tabelle durch ein Update in einer MySQL-Transaktion gesperrt?

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:
  • Nicht standardmäßiger Implementierungscode für die MySQL UPDATE-Anweisung
  • MySQL-Update-Fall Update-Feldwert ist keine feste Operation
  • Beim Ändern eines Datensatzes in MySQL lautet die Aktualisierungsoperation Feld = Feld + Zeichenfolge
  • MySQL-Beispiel-Tutorial: Ergebnisse auswählen, um ein Update durchzuführen
  • Detaillierte Analyse der Syntax von Mysql-Updates zum Ändern mehrerer Felder und
  • Notieren Sie eine Falle bei der Aktualisierung der MySQL-Update-Anweisung
  • Detailliertes Beispiel für MySQL-Joint-Tabellen-Update-Daten
  • Detaillierte Erläuterung des Ausführungsprozesses der MySQL-Update-Anweisung
  • Zusammenfassung der gemeinsamen Updatemethode für MySQL-Updates mehrerer Tabellen
  • Unterschied zwischen MySQL-Update-Set und und

<<:  HTML-Auszeichnungssprache - Tabellen-Tag

>>:  JS+Canvas zeichnet ein Glücksrad

Artikel empfehlen

Praktisches MySQL + PostgreSQL Batch-Insert-Update insertOrUpdate

Inhaltsverzeichnis 1. Baidu-Enzyklopädie 1. MySQL...

Eine detaillierte Analyse und Verarbeitung von MySQL-Alarmen

Vor kurzem hat ein Dienst einen Alarm ausgelöst, ...

Dieser Artikel hilft Ihnen, JavaScript-Variablen und -Datentypen zu verstehen

Inhaltsverzeichnis Vorwort: Freundliche Tipps: Va...

Vue+axios-Beispielcode zum Hochladen von Bildern und Erkennen von Gesichtern

Inhaltsverzeichnis Axios-Anfrage Qs-Verarbeitungs...

Verwendung der MySQL-Anweisung „truncate table“

Mit der Anweisung „Truncate table“ werden alle Da...

Allgemeine Linux-Befehle chmod zum Ändern der Dateiberechtigungen 777 und 754

Der folgende Befehl wird häufig verwendet: chmod ...

Detaillierter Prozessbericht der Vue2-Initiierungsanfragen mit Axios

Inhaltsverzeichnis Vorwort Axios-Installation und...

So greifen Sie über die IP-Adresse auf MySql zu

1. Melden Sie sich bei MySQL an: mysql -u root -h...

Implementierung eines Random Roll Callers basierend auf JavaScript

In diesem Artikel wird der spezifische JavaScript...