Heim  >  Artikel  >  Datenbank  >  Wie löst man einen MySQL-Deadlock?

Wie löst man einen MySQL-Deadlock?

青灯夜游
青灯夜游Original
2019-05-22 18:36:2412210Durchsuche

MySQL-Deadlock-Lösung: 1. Warten Sie bis zum Timeout (innodb_lock_wait_timeout=50s), setzen Sie die Transaktion automatisch zurück. 2. Initiieren Sie die Deadlock-Erkennung, setzen Sie eine Transaktion aktiv zurück und lassen Sie andere Transaktionen weiter ausführen (innodb_deadlock_detect=on ).

Wie löst man einen MySQL-Deadlock?

MySQL verfügt über zwei Deadlock-Handhabungsmethoden:

● Warten bis zum Timeout (innodb_lock_wait_timeout=50s), Transaktionen automatisch zurücksetzen .

● Deadlock-Erkennung einleiten, eine Transaktion proaktiv zurücksetzen und anderen Transaktionen die weitere Ausführung ermöglichen (innodb_deadlock_detect=on).

Aus Leistungsgründen wird im Allgemeinen die Deadlock-Erkennung zur Behandlung von Deadlocks verwendet.

Deadlock-Erkennung

Das Prinzip der Deadlock-Erkennung besteht darin, einen gerichteten Graphen mit Transaktionen als Eckpunkten und Sperren als Kanten zu erstellen und festzustellen, ob im gerichteten Graphen ein Zyklus vorhanden ist Zyklus gibt es einen Deadlock.

Rollback

Nachdem Sie einen Deadlock erkannt haben, wählen Sie 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 für das Rollback aus.

Das obige ist der detaillierte Inhalt vonWie löst man einen MySQL-Deadlock?. 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