Einführung in die MySQL-Entsperr- und Sperrtabelle

Einführung in die MySQL-Entsperr- und Sperrtabelle

MySQL Lock-Übersicht

Im Vergleich zu anderen Datenbanken ist der Sperrmechanismus von MySQL relativ einfach. Sein bemerkenswertestes Merkmal ist, dass verschiedene Speicher-Engines unterschiedliche Sperrmechanismen unterstützen. Beispielsweise verwenden die Speicher-Engines MyISAM und MEMORY Sperren auf Tabellenebene; die Speicher-Engine BDB verwendet Sperren auf Seitenebene, unterstützt aber auch Sperren auf Tabellenebene; die Speicher-Engine InnoDB unterstützt sowohl Sperren auf Zeilen- als auch auf Tabellenebene, verwendet aber standardmäßig Sperren auf Zeilenebene.

Die Eigenschaften dieser drei Arten von MySQL-Sperren können grob wie folgt zusammengefasst werden.

Overhead, Sperrgeschwindigkeit, Deadlock, Granularität und Parallelitätsleistung

l Sperre auf Tabellenebene: geringer Overhead, schnelle Sperrung, kein Deadlock, hohe Sperrgranularität, höchste Wahrscheinlichkeit eines Sperrkonflikts und geringste Parallelität.
l Sperre auf Zeilenebene: Hoher Overhead, langsame Sperrung; es kann zu Deadlocks kommen; die Sperrgranularität ist am geringsten, die Wahrscheinlichkeit eines Sperrkonflikts am geringsten und die Parallelität am höchsten.
l Seitensperre: Der Overhead und die Sperrzeit liegen zwischen der Tabellensperre und der Zeilensperre. Es kann zu Deadlocks kommen. Die Sperrgranularität liegt zwischen der Tabellensperre und der Zeilensperre und die Parallelität ist durchschnittlich.

MyISAM-Tabellensperren

Die MyISAM-Speicher-Engine unterstützt nur Tabellensperren. Dies ist der einzige Sperrtyp, der in den ersten Versionen von MySQL unterstützt wurde. Da die Anforderungen der Anwendungen an Transaktionsintegrität und Parallelität immer weiter stiegen, begann MySQL mit der Entwicklung einer transaktionsbasierten Speicher-Engine. Später erschienen nach und nach die BDB-Speicher-Engine, die Seitensperren unterstützt, und die InnoDB-Speicher-Engine, die Zeilensperren unterstützt (InnoDB ist eigentlich ein eigenständiges Unternehmen und wurde inzwischen von Oracle übernommen). MyISAM-Tabellensperren sind jedoch immer noch der am häufigsten verwendete Sperrtyp. In diesem Abschnitt wird die Verwendung von MyISAM-Tabellensperren ausführlich vorgestellt.
Sperrkonflikte auf Abfragetabellenebene

Tabellensperrenkonflikte auf Ihrem System können durch die Untersuchung der Statusvariablen table_locks_waited und table_locks_immediate analysiert werden:
mysql> Status wie „Tabelle%“ anzeigen;
+--------------------------+----------+
| Variablenname | Wert |
+--------------------------+----------+
| Tabellensperren_sofort | 2979 |
| Auf Tabellensperren gewartet | 0 |
+--------------------------+----------+
2 Zeilen im Satz (0,00 Sek.)
Wenn der Wert von Table_locks_waited relativ hoch ist, bedeutet dies, dass es einen ernsthaften Sperrkonflikt auf Tabellenebene gibt.

Holen Sie sich den InnoDB-Zeilensperrenkonfliktstatus

Sie können den Zeilensperrenkonflikt auf Ihrem System analysieren, indem Sie die Statusvariable InnoDB_row_lock prüfen:
mysql> Status wie „innodb_row_lock%“ anzeigen;
+-------------------------------+----------+
| Variablenname | Wert |
+-------------------------------+----------+
| InnoDB_row_lock_current_waits | 0 |
| InnoDB_row_lock_time | 0 |
| InnoDB_row_lock_time_avg | 0 |
| InnoDB_row_lock_time_max | 0 |
| InnoDB_row_lock_waits | 0 |
+-------------------------------+----------+
5 Zeilen im Satz (0,01 Sek.)
Wenn sich herausstellt, dass Sperrkonflikte schwerwiegend sind, z. B. hohe Werte von InnoDB_row_lock_waits und InnoDB_row_lock_time_avg, können Sie auch

Freischalten

Der erste

Prozessliste anzeigen;

Suchen Sie den Sperrvorgang und beenden Sie seine ID.

Der Zweite

mysql>TABELLEN ENTSPERREN;

Tabelle sperren

Sperren Sie die Datentabelle, um zu verhindern, dass die Tabelle während des Sicherungsvorgangs aktualisiert wird

mysql>SPERRT TABELLEN tbl_name LESEN;

Fügen Sie der Tabelle eine Schreibsperre hinzu:

mysql>Tabellen sperren, Tabellenname SCHREIBEN;

Das könnte Sie auch interessieren:
  • Mysql fragt die ausgeführten Transaktionen ab und wie auf Sperren gewartet werden soll
  • Grundlegendes zu MySQL-Sperren basierend auf Update-SQL-Anweisungen
  • PHP verwendet Mysql Lock, um hohe Parallelität zu lösen
  • Lösung für das Problem der gesperrten Transaktionsverarbeitung mit hoher Parallelität in PHP+MySQL
  • Analyse des MySQL-Sperrmechanismus und der Verwendung
  • So überprüfen Sie, wo die Metadatensperre in MySQL blockiert ist
  • Analyse der Implementierung der MySQL-Anweisungssperre
  • Mysql verwendet den Kill-Befehl, um das Deadlock-Problem zu lösen (eine bestimmte SQL-Anweisung, die ausgeführt wird, abzubrechen).
  • Eine vollständige Aufzeichnung eines Mysql-Deadlock-Fehlerbehebungsprozesses
  • MySQLs konzeptionelles Verständnis verschiedener Sperren

<<:  So richten Sie den Start einer JAR-Anwendung unter CentOS7 ein

>>:  HTML5 und jQuery zum Implementieren von Vorschau-Codebeispielen vor dem Hochladen lokaler Bilder

Artikel empfehlen

Grafisches Tutorial zur Installation von MySQL 5.5.27

1. Installation von MySQL 1. Öffnen Sie die herun...

MySQL-Fall bei der Verwendungsbeispielanalyse

Zuerst erstellen wir die Datenbanktabelle: Tabell...

JavaScript zum Erzielen eines dynamischen Tabelleneffekts

In diesem Artikel wird der spezifische Code für J...

Detaillierte Erklärung der JavaScript-Ereignisse onblur und onfocus

Auf HTML-Seiten verfügen visuelle Elemente wie Sc...

So verwenden Sie Font Awesome 5 in Vue-Entwicklungsprojekten

Inhaltsverzeichnis Abhängigkeiten installieren Ko...

HTML+CSS zum Erzielen von Spezialeffekten durch Textfaltung – Beispiel

In diesem Artikel werden hauptsächlich Beispiele ...

Mysql Workbench - Abfragemethode für MySQL-Datenbanken

Mysql Workbench ist ein Open-Source-Datenbankclie...

Detaillierte Erklärung der MySQL-Binlog-Verwendung

binlog ist eine binäre Protokolldatei, die alle D...

Grafisches Tutorial zur Installation und Konfiguration von MySQL Server 5.7.20

Dieser Artikel zeichnet die Installations- und Ko...

Detaillierte Schritte zur Verwendung von Redis in Docker

1. Einleitung Dieser Artikel zeigt Ihnen, wie Sie...

CSS verwendet die BEM-Namenskonvention

Welche Informationen möchten Sie erhalten, wenn S...