Heim  >  Artikel  >  Datenbank  >  Was sind die MySQL-Datenbanksperren?

Was sind die MySQL-Datenbanksperren?

清浅
清浅Original
2019-05-08 09:29:5730148Durchsuche

Die Sperren in der MySQL-Datenbank sind: 1. Gemeinsame Sperre, was bedeutet, dass die Daten gelesen werden; 2. Exklusive Sperre, was bedeutet, dass die Daten geschrieben werden; Ein Datensatz; 4. Absichtssperre, um die Art der Sperre offenzulegen, die für die nächste Zeile in einer Transaktion angefordert wird.

Was sind die MySQL-Datenbanksperren?

MySQL-Datenbanksperre

1 Sperre)

Gemeinsame Sperre (S) bedeutet das Lesen von Daten. Daher können mehrere Transaktionen gleichzeitig gemeinsame Sperren zu einem Objekt hinzufügen.

SQL-Anweisung, die eine gemeinsame Sperre generiert:

select * from ad_plan lock in share mode;

2. Exklusive Sperre (Exklusive Sperre, auch X-Sperre genannt)

Exklusive Sperre bedeutet, dass die data Schreibvorgänge ausführen. Wenn eine Transaktion einem Objekt eine exklusive Sperre hinzufügt, können andere Transaktionen keine weiteren Sperren hinzufügen.
SQL-Anweisung, die eine exklusive Sperre generiert:

 select * from ad_plan for update;

3. Zeilensperre (Zeilensperre)

Sperrt eine Zeile mit Datensätzen und betrifft nur einen Datensatz.

wird normalerweise in DML-Anweisungen wie INSERT, UPDATE, DELETE usw. verwendet.

InnoDB-Zeilensperre wird durch Sperren der Indexeinträge im Index implementiert. Dies unterscheidet sich von MySQL und Oracle, die durch Sperren der entsprechenden Datenzeilen im Datenblock implementiert werden.

Die Zeilensperren-Implementierungsfunktion von InnoDB bedeutet, dass InnoDB Sperren auf Zeilenebene nur verwendet, wenn Daten über Indexbedingungen abgerufen werden. Andernfalls verwendet InnoDB Tabellensperren!

4. Absichtssperre

Die Absichtssperre ist eine Sperre auf Tabellenebene. Ihr Designzweck besteht hauptsächlich darin, die Art der Sperre anzuzeigen, die für die nächste Zeile angefordert wird in einer Transaktion. Zwei Tabellensperren in InnoDB:
Absichtliche gemeinsame Sperre (IS): Zeigt an, dass die Transaktion das Hinzufügen einer gemeinsamen Sperre zur Datenzeile vorbereitet, was bedeutet, dass vor dem Hinzufügen einer gemeinsamen Sperre zu einer Datenzeile die IS-Sperre des Tabelle muss zuerst abgerufen werden;
Absichtliche exklusive Sperre (IX): Ähnlich wie oben bedeutet dies, dass die Transaktion das Hinzufügen einer exklusiven Sperre zur Datenzeile vorbereitet, was darauf hinweist, dass die Transaktion zuerst die IX-Sperre erhalten muss Tabelle, bevor einer Datenzeile eine exklusive Sperre hinzugefügt wird.
Absichtssperren werden von InnoDB automatisch hinzugefügt und erfordern keinen Benutzereingriff.
Für INSERT, UPDATE und DELETE fügt InnoDB den beteiligten Daten automatisch exklusive Sperren hinzu. Bei allgemeinen SELECT-Anweisungen fügt InnoDB keine Sperren hinzu und Transaktionen können durch die folgenden Anweisungen explizit gemeinsame Sperren oder exklusive Sperren hinzufügen.
Gemeinsame Sperre: AUSWÄHLEN … SPERREN IM TEILUNGSMODUS;
Exklusive Sperre: AUSWÄHLEN … FÜR AKTUALISIERUNG;

Sperrstufe

MySQL ist nach der Ebene oder Dichte der Sperren unterteilt und verfügt über drei Sperrebenen: Seitenebene, Tabellenebene und Zeilenebene.

(1) Sperren auf Tabellenebene

Geringer Overhead, keine große Sperrgranularität, höchste Wahrscheinlichkeit von Sperrenkonflikten, niedrigste hohe Parallelität.

(2) Sperren auf Zeilenebene

sind teuer und langsam zu sperren. Die Sperrgranularität ist am geringsten am niedrigsten, und die Parallelität ist auch am höchsten.

(3) Seitensperre

Die Kosten und die Sperrzeit sind zwischen Tabellensperren und Zeilensperren begrenzt. Die Granularität der Sperren ist zwischen Tabellensperren und Zeilen begrenzt Sperren Zwischen Zeilensperren ist die Parallelität durchschnittlich.

Das obige ist der detaillierte Inhalt vonWas sind die MySQL-Datenbanksperren?. 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
Vorheriger Artikel:Ist MySQL kostenpflichtig?Nächster Artikel:Ist MySQL kostenpflichtig?