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 ).
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!