Heim >Datenbank >MySQL-Tutorial >Einführung in verwandte Inhalte der Mysql-InnoDB-Sperre

Einführung in verwandte Inhalte der Mysql-InnoDB-Sperre

不言
不言nach vorne
2019-02-21 12:00:492183Durchsuche

Der Inhalt dieses Artikels ist eine Einführung in den relevanten Inhalt der Mysql-InnoDB-Sperre. Ich hoffe, dass er für Sie hilfreich ist.

Sperrtyp

Sperre auf Zeilenebene

Die Sperrmodi sind nur LOCK_S und LOCK_X, andere FLAGs werden für die Sperrbeschreibung verwendet. Wie oben erwähnt, gibt es vier Beschreibungen: LOCK_GAP, LOCK_REC_NOT_GAP und LOCK_ORDINARY, LOCK_INSERT_INTENTION. (Verwandte Empfehlungen: MySQL-Tutorial)

LOCK_REC_NOT_GAP

LOCK_GAP

LOCK_ORDINARY(Next-Key Lock)

LOCK_INSERT_INTENTION

static const byte lock_compatibility_matrix[5][5] = {
/** IS IX S X AI /
/ IS / { TRUE, TRUE, TRUE, FALSE, TRUE},
/ IX / { TRUE, TRUE, FALSE, FALSE, TRUE},
/ S / { TRUE, FALSE, TRUE, FALSE, FALSE},
/ X / { FALSE, FALSE, FALSE, FALSE, FALSE},
/ AI / { TRUE, TRUE, FALSE, FALSE, FALSE}
};

Für den GAP-Typ (das Sperrobjekt ist auf Supremum eingerichtet oder der beantragte Sperrtyp ist LOCK_GAP) und es sich bei der Anwendung nicht um eine Einfügungssperre handelt, muss nicht auf eine Sperre gewartet werden. Dies liegt daran, dass unterschiedliche Sitzungen möglich sind Bewerben Sie sich für verschiedene Arten von Sperren für dasselbe GAP, und GAP-Sperren selbst sind so konzipiert, dass sie nicht miteinander in Konflikt geraten. Sperrobjekte vom Typ LOCK_ORDINARY oder LOCK_REC_NOT_GAP müssen nicht auf Sperren vom Typ LOCK_GAP warten Sie müssen nicht auf Sperrobjekte vom Typ LOCK_REC_NOT_GAP warten.
Jede Sperranforderung. Es besteht keine Notwendigkeit, auf das Einfügen der Absichtssperre zu warten.

Sperren auf Tabellenebene

Die Sperren auf Tabellenebene von InnoDB umfassen fünf Sperrmodi: LOCK_IS, LOCK_IX, LOCK_X, LOCK_S und LOCK_AUTO_INC Sperren, Kompatibilität zwischen Sperren Folgen Sie der Definition in das Array lock_compatibility_matrix.

Der Zweck von InnoDB-Sperren auf Tabellenebene besteht darin, Parallelitätsprobleme zwischen DDL und DML zu verhindern. Nach der Einführung von MDL-Sperren in Version 5.5 ist die Bedeutung von Sperren auf Tabellenebene in der InnoDB-Schicht jedoch nicht mehr so ​​groß. Die MDL-Sperre selbst hat die meisten ihrer Funktionen abgedeckt.

Absichtssperren sind IS- und IX-Sperren auf Tabellenebene, die nicht miteinander in Konflikt stehen, jedoch mit S/X-Sperren auf Tabellenebene.

Wenn Sie einem Datensatz eine S- oder X-Sperre hinzufügen, müssen Sie sicherstellen, dass dieser über eine entsprechende Absichtssperre oder eine Sperre auf Tabellenebene mit höherer Sperrstärke für dieselbe Tabelle verfügt.




Das obige ist der detaillierte Inhalt vonEinführung in verwandte Inhalte der Mysql-InnoDB-Sperre. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen