Vermeiden von „Deadlock beim Versuch, eine Sperre zu erhalten“ in MySQL
Problem:
Ein Entwickler stößt zeitweise auf „Deadlock gefunden, als er versucht, eine Sperre zu erhalten; Versuchen Sie, die Transaktion neu zu starten. Fehler beim Ausführen von INSERTs in einer InnoDB-Tabelle, die Online-Benutzeraktivitäten verfolgt. Die Tabelle wird bei der Seitenaktualisierung aktualisiert und alle 15 Minuten durch einen Cronjob gelöscht.
Fragen in Frage:
Lösung:
Um Deadlocks zu beheben, ist es wichtig sicherzustellen, dass Transaktionen Sperrschlüssel in einer konsistenten Reihenfolge sperren. Hier sind die empfohlenen Schritte:
Schlüssel in Abfragen anordnen:
Sortieren Löschen Anweisungen:
DELETE FROM onlineusers WHERE id IN ( SELECT id FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND ORDER BY id ) u;
Erneut versuchen Mechanismus:
Das obige ist der detaillierte Inhalt vonWie kann ich die Fehlermeldung „Deadlock beim Versuch, eine Sperre zu erhalten' in meinem MySQL-Online-Benutzerverfolgungssystem verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!