Im Vergleich zu anderen Datenbanken ist der Sperrmechanismus von MySQL relativ einfach. Sein wichtigstes Merkmal ist, dass verschiedene Speicher-Engines unterschiedliche Sperrmechanismen unterstützen
MySQL-Sperrübersicht
Im Vergleich Bei anderen Datenbanken ist der Sperrmechanismus von MySQL relativ einfach. Das bemerkenswerteste Merkmal ist, dass verschiedene Speicher-Engines unterschiedliche Sperrmechanismen unterstützen. Beispielsweise verwenden die Speicher-Engines MyISAM und MEMORY Sperren auf Tabellenebene (Sperren auf Tabellenebene); die Speicher-Engine BDB verwendet Sperren auf Seitenebene (Sperren auf Seitenebene), unterstützt jedoch auch Sperren auf Tabellenebene Sowohl das Sperren auf Zeilenebene (Sperren auf Zeilenebene) als auch das Sperren auf Tabellenebene werden ebenfalls unterstützt, aber standardmäßig wird das Sperren auf Zeilenebene verwendet.
Die Eigenschaften dieser drei Sperren in MySQL lassen sich grob wie folgt zusammenfassen.
Overhead, Sperrgeschwindigkeit, Deadlock, Granularität, Parallelitätsleistung
l Sperre auf Tabellenebene: geringer Overhead, schnelle Sperre; es tritt kein Deadlock auf, es tritt ein Sperrkonflikt auf die niedrigste Parallelität.
l Sperren auf Zeilenebene, Sperren auf Zeilenebene: hoher Overhead, langsam Es kann zu Deadlocks kommen. Die Granularität der Sperren ist am geringsten, die Wahrscheinlichkeit von Sperrkonflikten ist am höchsten und der Grad der Parallelität ist ebenfalls am höchsten.
l Seitensperre: Der Overhead und die Sperrzeit liegen zwischen Tabellensperren und Zeilensperren. Die Sperrgranularität liegt zwischen Tabellensperren und Zeilensperren, und die Parallelität ist durchschnittlich.
MyISAM-Tabellensperre
Die MyISAM-Speicher-Engine unterstützt nur Tabellensperren, was auch der einzige Sperrtyp ist, der in den ersten Versionen von MySQL unterstützt wurde. Mit der kontinuierlichen Verbesserung der Anwendungsanforderungen für Transaktionsintegrität und Parallelität begann MySQL mit der Entwicklung transaktionsbasierter Speicher-Engines. Später erschienen nach und nach die BDB-Speicher-Engine, die Seitensperren unterstützt, und die InnoDB-Speicher-Engine, die Zeilensperren unterstützt (eigentlich ist InnoDB eine separate). Ein Unternehmen, das jetzt von Oracle übernommen wurde. Allerdings ist die Tabellensperre von MyISAM immer noch der am weitesten verbreitete Sperrtyp. In diesem Abschnitt wird die Verwendung von MyISAM-Tabellensperren ausführlich vorgestellt.
AbfrageSperrenkonflikt auf Tabellenebene
Tabellensperrenkonflikte auf dem System können analysiert werden, indem die Variablen „table_locks_waited“ und „table_locks_immediate“StatusVariablen überprüft werden:
mysql> Status anzeigen wie „table%“;
+--------------------------------- -+------+
|. Variablenname |
+--------+---- ---+
|. Table_locks_immediate |. 2979 |
| -----+
2 Zeilen im Satz (0,00 Sek.))
Wenn der Wert von Table_locks_waited relativ hoch ist, weist dies darauf hin, dass ein schwerwiegender Sperrkonflikt auf Tabellenebene vorliegt.
InnoDB-Zeilensperrenkonflikt abrufen
mysql> show status like 'innodb_row_lock%';
+--------------------+------+
|. Variablenname |
+---------------------+---------------------+
|. 0 |
|. InnoDB_row_lock_time |. 0 |
|. ------ - ------+-------+
5 Zeilen im Satz (0,01 Sek.)
Wenn ein Sperrenkonflikt festgestellt wird Seien Sie ernst, da die Werte von InnoDB_row_lock_waits und InnoDB_row_lock_time_avg relativ hoch sind. Sie können es auch über
Der erste TypProzessliste anzeigen;
Sperrprozess finden, ID töten;Der zweite Typmysql>UNLOCK TABLES;Tabelle sperren Sperren Sie die Datentabelle, um ein Sperren der Datentabelle zu vermeiden. Während des Sicherungsvorgangs wurde die Tabelleaktualisiert
mysql>LOCK TABLES tbl_name READ;Fügen Sie der Tabelle eine Schreibsperre hinzu:
mysql>LOCK TABLES tbl_name WRITE;[Verwandte Empfehlungen]1.Mysql kostenloses Video-Tutorial
2.So verbessern Sie die Geschwindigkeit der Datenbankabfrage für Millionen von Elementen
3.5 häufige Fehler beim Datenbankdesign
4.Detaillierte Erläuterung der SQL-Anweisung, die den ursprünglichen Inhalt von MySQL beibehält und Inhalte später hinzufügt
5Eine Zusammenfassung, wie häufig verwendete SQL-Anweisungen in MySQL geschrieben werden
Das obige ist der detaillierte Inhalt vonDetaillierte Beispiele zum Entsperren und Sperren von Tabellen in MYSQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!