Heim  >  Artikel  >  Datenbank  >  Gängige MySQL-Sperrtypen

Gängige MySQL-Sperrtypen

WBOY
WBOYOriginal
2023-12-21 08:52:291487Durchsuche

MySQL 中常见的锁类型

Gemeinsame Sperrtypen in MySQL, spezifische Codebeispiele sind erforderlich

Einführung:
Wenn in der Datenbank mehrere Clients gleichzeitig dieselben Daten lesen oder ändern, treten Probleme beim gleichzeitigen Betrieb auf. Um die Konsistenz und Integrität der Daten sicherzustellen, verwendet die Datenbank-Engine einen Sperrmechanismus, um den Zugriff auf gemeinsam genutzte Daten zu steuern. Als häufig verwendete relationale Datenbank bietet MySQL auch verschiedene Sperrtypen. In diesem Artikel werden gängige Sperrtypen in MySQL vorgestellt und spezifische Codebeispiele bereitgestellt.

1. Shared Lock
Shared Lock (auch Lesesperre genannt) ist eine Sperre, die zum gleichzeitigen Lesen verwendet wird. Mehrere Clients können gleichzeitig gemeinsame Sperren erwerben, ohne sich gegenseitig zu blockieren. Gemeinsame Sperren können die Konsistenz der von mehreren Clients gleichzeitig gelesenen Daten sicherstellen.

Beispielcode:

-- Verbindung 1:
TRANSAKTION STARTEN;
SELECT * FROM table1 WHERE id = 1 LOCK IN SHARE MODE
-- Verbindung 2: (Ausgeführt, bevor Verbindung 1 die gemeinsame Sperre aufhebt)
TRANSAKTION STARTEN;
SELECT * FROM table1 WHERE id = 1 LOCK IN SHARE MODE;

Im obigen Code haben sowohl Verbindung 1 als auch Verbindung 2 die gemeinsame Sperre erhalten und können die Daten mit id=1 in der Tabelle table1 gleichzeitig lesen .

2. Exklusive Sperre
Eine exklusive Sperre (auch Schreibsperre genannt) ist eine Sperre, die zum gleichzeitigen Schreiben oder Ändern verwendet wird. Wenn mehrere Clients gleichzeitig dieselben Daten schreiben oder ändern, kann die exklusive Sperre sicherstellen, dass nur ein Client die Daten schreiben kann, wodurch die Integrität der Daten sichergestellt wird.

Beispielcode:

-- Verbindung 1:
TRANSAKTION STARTEN;
SELECT * FROM table1 WHERE id = 1 FOR UPDATE;
-- Verbindung 2: (Ausgeführt, bevor Verbindung 1 die exklusive Sperre aufhebt)
TRANSAKTION STARTEN;
AUSWÄHLEN * FROM table1 WHERE id = 1 FOR UPDATE;

Im obigen Code haben sowohl Verbindung 1 als auch Verbindung 2 exklusive Sperren erworben und nur Verbindung 1 kann die Daten mit id=1 in die Tabelle table1 schreiben.

3. Absichtssperre
Die Absichtssperre ist eine Sperre, die zur Koordinierung der Beziehung zwischen gemeinsam genutzten Sperren und exklusiven Sperren verwendet wird. Wenn eine Transaktion eine gemeinsame Sperre oder eine exklusive Sperre für eine Tabelle erhält, kann die Absichtssperre einen Warnmechanismus bereitstellen, damit andere Transaktionen den Status der Sperre kennen. Absichtssperren werden in zwei Typen unterteilt, nämlich gemeinsame Absichtssperren (IS) und exklusive Absichtssperren (IX).

Beispielcode:

-- Verbindung 1:
TRANSAKTION STARTEN;
TABELLEN-TABELLE READ;

Im obigen Code erhält Verbindung 1 die gemeinsame Absichtssperre, und Verbindung 2 kann auch die gemeinsame Absichtssperre erwerben und die Daten der Tabelle Tabelle 1 lesen.

4. Zeilensperre

Zeilensperre ist eine Sperre auf Datenzeilenebene. Wenn mehrere Transaktionen gleichzeitig verschiedene Zeilen derselben Tabelle bearbeiten, können Zeilensperren sicherstellen, dass nur eine Transaktion eine bestimmte Zeile ändern kann, wodurch die Effizienz des gleichzeitigen Zugriffs verbessert wird.

Beispielcode:

-- Verbindung 1:

START TRANSACTION;

SELECT * FROM table1 WHERE id = 1 FOR UPDATE;

-- Verbindung 2: (Ausgeführt, bevor Verbindung 1 die Zeilensperre aufhebt)
START TRANSACTION;
SELECT * FROM table1 WHERE id = 2 FOR UPDATE;

Im obigen Code erhält Verbindung 1 die Zeilensperre und ändert die Daten mit id=1 in Tabelle1. Verbindung 2 wartet darauf, dass Verbindung 1 die Sperre aufhebt, bevor sie sie erhalten und ändern kann die ID. =2 Daten.

Fazit:

Dieser Artikel stellt die gängigen Sperrtypen in MySQL vor, einschließlich gemeinsamer Sperren, exklusiver Sperren, Absichtssperren und Zeilensperren, und bietet spezifische Codebeispiele. Das Verständnis und die Beherrschung der Verwendung von Sperren ist entscheidend für die Gewährleistung der Datenkonsistenz und -integrität. In der tatsächlichen Entwicklung ist es erforderlich, den geeigneten Sperrtyp basierend auf den spezifischen Geschäftsanforderungen und gleichzeitigen Zugriffsbedingungen auszuwählen und den Sperrmechanismus rational zu verwenden, um die Korrektheit und Effizienz des Datenbankbetriebs sicherzustellen.

Das obige ist der detaillierte Inhalt vonGängige MySQL-Sperrtypen. 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