Heim >Datenbank >MySQL-Tutorial >In welche Granularität können MySQL-Datenbanksperren unterteilt werden?

In welche Granularität können MySQL-Datenbanksperren unterteilt werden?

青灯夜游
青灯夜游Original
2021-04-21 18:38:574011Durchsuche

Kann nach Granularität unterteilt werden: 1. Sperren auf Zeilenebene, die die feinste Sperrgranularität in MySQL darstellen, was bedeutet, dass nur die aktuell bearbeitete Zeile gesperrt ist; 2. Sperren auf Tabellenebene, die die größte Sperrgranularität in MySQL darstellen . Sperren bedeutet, die gesamte Tabelle des aktuellen Vorgangs zu sperren. 3. Sperre auf Seitenebene, eine Sperre in MySQL, deren Sperrgranularität zwischen Sperren auf Zeilenebene und Sperren auf Tabellenebene liegt.

In welche Granularität können MySQL-Datenbanksperren unterteilt werden?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

In relationalen Datenbanken können Datenbanksperren entsprechend der Sperrgranularität in Sperren auf Zeilenebene (INNODB-Engine), Sperren auf Tabellenebene (MYISAM-Engine) und Sperren auf Seitenebene (BDB-Engine) unterteilt werden.

Von MyISAM- und InnoDB-Speicher-Engines verwendete Sperren:

  • MyISAM verwendet Sperren auf Tabellenebene.

  • InnoDB unterstützt Sperren auf Zeilenebene und Sperren auf Tabellenebene, und die Standardeinstellung ist Sperren auf Zeilenebene.

Vergleich von Sperren auf Zeilenebene, Sperren auf Tabellenebene und Sperren auf Seitenebene

  • Sperren auf Zeilenebene: Die detaillierteste Sperre in MySQL, was bedeutet, dass nur die Zeile des aktuellen Vorgangs gesperrt ist . Sperren auf Zeilenebene können Konflikte bei Datenbankvorgängen erheblich reduzieren. Seine Sperrgranularität ist am kleinsten, aber der Sperraufwand ist auch am größten. Sperren auf Zeilenebene werden in gemeinsame Sperren und exklusive Sperren unterteilt.

    Eigenschaften: Hoher Overhead, langsame Sperren; die Sperrgranularität ist am geringsten, die Wahrscheinlichkeit von Sperrkonflikten ist am höchsten und die Parallelität ist am höchsten.

  • Sperre auf Tabellenebene: Die Sperre mit der größten Sperrgranularität in MySQL, was bedeutet, dass die gesamte Tabelle des aktuellen Vorgangs gesperrt wird. Sie ist einfach zu implementieren, verbraucht weniger Ressourcen und wird von den meisten MySQL-Engines unterstützt. Die am häufigsten verwendeten MyISAM- und InnoDB-Unterstützungssperren auf Tabellenebene. Sperren auf Tabellenebene werden in gemeinsame Lesesperren für Tabellen (gemeinsame Sperren) und exklusive Schreibsperren für Tabellen (exklusive Sperren) unterteilt.

    Merkmale: geringer Overhead, schnelles Sperren; keine Deadlocks; große Sperrgranularität, höchste Wahrscheinlichkeit von Sperrkonflikten und niedrigste Parallelität.

  • Sperre auf Seitenebene: Es handelt sich um eine Sperre in MySQL, deren Sperrgranularität zwischen Sperren auf Zeilenebene und Sperren auf Tabellenebene liegt. Sperren auf Tabellenebene sind schnell, weisen jedoch viele Konflikte auf. Sperren auf Zeilenebene weisen wenige Konflikte auf, sind jedoch langsam. Also haben wir eine kompromittierte Seitenebene genommen und jeweils eine Gruppe benachbarter Datensätze gesperrt.

    Funktionen: Overhead und Sperrzeit sind zwischen Tabellensperren und Zeilensperren begrenzt; die Sperrgranularität ist zwischen Tabellensperren und Zeilensperren begrenzt, und die Parallelität ist durchschnittlich

Verwandte kostenlose Lernempfehlungen: MySQL Video-Tutorial

Das obige ist der detaillierte Inhalt vonIn welche Granularität können MySQL-Datenbanksperren unterteilt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn