Dieser Artikel bietet Ihnen eine Einführung in den MySQL-Datenbanksperrmechanismus. Ich hoffe, dass er für Freunde hilfreich ist.
Einführung in den MySQL-Sperrmechanismus
Der Datenbank-Sperrmechanismus besteht einfach darin, dass die Datenbank verschiedene gemeinsam genutzte Ressourcen erstellt, um die Konsistenz sicherzustellen Daten. Eine Regel, die den gleichzeitigen Zugriff geordnet gestalten soll.
Jede Art von Datenbank erfordert einen entsprechenden Sperrmechanismus, daher bildet MySQL hier natürlich keine Ausnahme.
Aufgrund der Eigenschaften ihrer eigenen Architektur verfügt die MySQL-Datenbank über eine Vielzahl von Datenspeicher-Engines. Jede Speicher-Engine verfügt über unterschiedliche Anwendungsszenario-Eigenschaften, um den jeweiligen Anforderungen gerecht zu werden Anwendungsszenario Entsprechend den Anforderungen ist der Sperrmechanismus jeder Speicher-Engine für die spezifischen Szenarien optimiert und ausgelegt. Daher sind auch die Sperrmechanismen verschiedener Speicher-Engines sehr unterschiedlich.
Im Allgemeinen verwenden MySQL-Speicher-Engines drei Arten (Ebenen) von Sperrmechanismen: Sperren auf Zeilenebene, Sperren auf Seitenebene und Sperren auf Tabellenebene.
Sperre auf Zeilenebene (Zeilenebene)
Sperre auf Zeilenebene, bezieht sich im Allgemeinen auf eine exklusive Sperre. Das heißt, gesperrte Zeilen können nicht geändert oder gelöscht werden und können nur von anderen Sitzungen ausgewählt werden.
Exklusive Sperre wird auch Schreibsperre oder kurz X-Sperre genannt. Wie der Name schon sagt, kann eine exklusive Sperre nicht mit anderen Sperren koexistieren, wenn eine Transaktion eine exklusive Sperre für eine Datenzeile erhält , andere Transaktionen können keine anderen Sperren für die Zeile erwerben.
Das größte Merkmal der Sperrung auf Zeilenebene besteht darin, dass die Granularität des gesperrten Objekts sehr gering ist und es sich auch um die kleinste Sperrgranularität handelt, die derzeit von großen Datenbankverwaltungssoftware implementiert wird.
Da die Sperrgranularität sehr gering ist, ist auch die Wahrscheinlichkeit einer Sperrressourcenkonkurrenz gering, was der Anwendung so viele Möglichkeiten zur gleichzeitigen Verarbeitung wie möglich geben und die Gesamtleistung erheblich verbessern kann -Parallelitätsanwendungssysteme.
Obwohl es große Vorteile bei der gleichzeitigen Verarbeitung bietet, bringt das Sperren auf Zeilenebene auch viele Nachteile mit sich.
Da die Granularität der Sperrressourcen sehr gering ist, müssen jedes Mal viele Dinge getan werden, um die Sperre zu erhalten und freizugeben, was natürlich zu einem höheren Verbrauch führt.
Darüber hinaus ist das Sperren auf Zeilenebene auch am anfälligsten für Deadlocks.
Sperre auf Tabellenebene (Tabellenebene)
Sperre auf Tabellenebene, sperren Sie direkt die gesamte Tabelle, In Ihrem gesperrten Zustand können andere Prozesse nicht in die Tabelle schreiben. Wenn Sie eine Schreibsperre haben, dürfen andere Prozesse nicht lesen.
Im Gegensatz zur Sperrung auf Zeilenebene ist die Sperrung auf Tabellenebene der detaillierteste Sperrmechanismus unter den MySQL-Speicher-Engines.
Das größte Merkmal dieses Sperrmechanismus ist, dass die Implementierungslogik sehr einfach ist und nur minimale negative Auswirkungen auf das System hat. Das Erlangen und Freigeben von Sperren geht also sehr schnell.
Da Sperren auf Tabellenebene die gesamte Tabelle auf einmal sperren, kann das Deadlock-Problem, das uns plagt, vermieden werden.
Natürlich besteht die negative Auswirkung einer großen Sperrgranularität darin, dass die Wahrscheinlichkeit eines Ressourcenkonflikts sehr hoch ist, was die Parallelität erheblich verringert.
Sperren auf Seitenebene (Seitenebene)
Sperren auf Seitenebene ist eine einzigartige Art der Sperrung MySQL Level ist in anderer Datenbankverwaltungssoftware nicht allzu häufig.
Das Merkmal der Sperrung auf Seitenebene besteht darin, dass die Sperrgranularität zwischen der Sperrung auf Zeilenebene und der Sperrung auf Tabellenebene liegt, also der Ressourcenaufwand, der zum Erhalten der Sperre und der gleichzeitigen Verarbeitungsfunktionen erforderlich ist Es kann Folgendes bieten: Es liegt auch irgendwo zwischen den beiden oben genannten.
Darüber hinaus kann das Sperren auf Seitenebene ebenso wie das Sperren auf Zeilenebene zu einem Deadlock führen.
Zusammenfassung
Im Prozess der Ressourcensperrung in der Datenbank nimmt die Granularität der gesperrten Ressourcen ab. Der zum Sperren derselben Datenmenge erforderliche Speicherbedarf nimmt zu und der Implementierungsalgorithmus wird immer komplexer.
Da die Granularität gesperrter Ressourcen abnimmt, verringert sich auch die Wahrscheinlichkeit, dass Anwendungszugriffsanforderungen auf Sperrwartezeiten stoßen, und die allgemeine Parallelität des Systems nimmt zu.
In MySQL wird die Sperre auf Tabellenebene von einigen nicht-transaktionalen Speicher-Engines wie MyISAM, MEmory, CSv usw. verwendet, während die Sperre auf Zeilenebene hauptsächlich vom InnoDB-Speicher verwendet wird Engine und NDB-Cluster-Speicher-Engine, das Sperren auf Seitenebene ist hauptsächlich die Sperrmethode der BerkeleyDB-Speicher-Engine.
Das obige ist der detaillierte Inhalt vonEinführung in den MySQL-Datenbanksperrmechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!