1. Was ist ein Deadlock? Die offizielle Definition lautet wie folgt: Zwei Transaktionen halten von der anderen Partei benötigte Sperren und warten darauf, dass die andere Partei sie freigibt, und keine der Parteien gibt ihre eigenen Sperren frei. Das ist so, als ob Sie und die andere Partei eine Geisel hätten und Sie beide über den Austausch von Personen verhandeln würden. Sie bitten die andere Seite, den Player freizugeben, und die andere Seite bittet Sie, den Player freizugeben. 2. Warum kommt es zu einem Deadlock? Angesichts dessen haben Sie möglicherweise eine solche Frage. Transaktionen unterscheiden sich von Verhandlungen. Warum können Transaktionen die Sperre nicht sofort nach ihrer Verwendung freigeben? Müssen Sie die Sperre nach Abschluss des Vorgangs gedrückt halten? Hierbei handelt es sich um die Parallelitätskontrolle von MySQL. Es gibt zwei Möglichkeiten der Parallelitätskontrolle in MySQL, eine ist MVCC und die andere ist das Zwei-Phasen-Sperrprotokoll. Warum brauchen wir also eine Parallelitätskontrolle? Dies liegt daran, dass bei der gleichzeitigen Ausführung von MySQL durch mehrere Benutzer zur Verbesserung der Parallelitätsleistung die Anforderungen mehrerer Benutzer seriell ausgeführt werden müssen (serialisierbare Planung). Auf die konkrete Parallelitätskontrolle wird hier nicht näher eingegangen. Lassen Sie uns das Zweiphasen-Sperrprotokoll weiter ausführlich besprechen. Zwei-Phasen-Verriegelungsprotokoll (2PL) Offizielle Definition: Das zweiphasige Sperrprotokoll bedeutet, dass alle Transaktionen Daten in zwei Phasen sperren und entsperren müssen. Bevor die Transaktion Daten liest oder schreibt, muss sie zunächst eine Sperre für die Daten erhalten. Nach dem Aufheben einer Sperre kann die Transaktion keine weiteren Sperren mehr beantragen oder erhalten. Entsprechend MySQL ist es in zwei Phasen unterteilt:
Das heißt, nur durch Befolgen des zweistufigen Sperrprotokolls kann eine serialisierbare Planung erreicht werden. Das Zwei-Phasen-Sperrprotokoll erfordert jedoch nicht, dass eine Transaktion alle Daten, die sie benötigt, gleichzeitig sperrt, und es gibt keine Reihenfolgeanforderung in der Sperrphase, sodass diese Methode der Parallelitätskontrolle zu einem Deadlock führt. 3. Wie geht MySQL mit Deadlocks um? MySQL verfügt über zwei Methoden zur Behandlung von Deadlocks:
Aus Leistungsgründen wird zur Behandlung von Deadlocks im Allgemeinen die Deadlock-Erkennung verwendet. Deadlock-Erkennung Das Prinzip der Deadlock-Erkennung besteht darin, einen gerichteten Graphen mit Transaktionen als Knoten und Sperren als Kanten zu konstruieren und zu bestimmen, ob im gerichteten Graphen ein Zyklus vorliegt. Wenn ein Zyklus vorliegt, liegt ein Deadlock vor. Rollback Nachdem ein Deadlock erkannt wurde, wird basierend auf dem Feld trx_weight in der Tabelle INFORMATION_SCHEMA.INNODB_TRX die Transaktion mit der geringsten Anzahl eingefügter, aktualisierter oder gelöschter Zeilen zum Rollback ausgewählt. 4. So vermeiden Sie Deadlocks Sammeln Sie Deadlock-Informationen:
Reduzieren Sie Deadlocks:
Oben finden Sie eine ausführliche Erklärung, wie MySQL (InnoDB) mit Deadlocks umgeht. Ich hoffe, dass es Ihnen weiterhilft. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Wie lädt Vue Dateien mit unterschiedlichem Ursprung basierend auf der URL herunter?
>>: Mehrere Szenarien für die Verwendung des Nginx Rewrite-Moduls
Dieser Blog ist eine Arbeitsnotiz Umfeld: Nginx-V...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Vorwort 1. Mit vue-cli 1. Defi...
Inhaltsverzeichnis 1. Bestimmen Sie den Entitätst...
Fügen Sie secure_file_priv = ' '; führen ...
3D-Koordinatenkonzept Wenn sich ein Element dreht...
Obwohl Microsoft T4-Vorlagen bereitstellt, finde ...
Lassen Sie mich zunächst kurz erklären, was MySQL...
# Installations-Daemon-Konfiguration für Redis un...
Welche Probleme löst MySQL ROLE? Wenn Sie ein DBA...
Die Anzeige von Daten ist seit jeher eine Forderu...
Installation der MySQL-Dekomprimierungsversion un...
Dieser Artikel veranschaulicht anhand von Beispie...
In allgemeinen Anwendungen verwenden wir die Type...
Ich möchte den Aktivierungsschlüssel für Windows ...