Heim > Datenbank > MySQL-Tutorial > Wie kann ich MySQL-Deadlocks in einer Online-Benutzertabelle effektiv vermeiden?

Wie kann ich MySQL-Deadlocks in einer Online-Benutzertabelle effektiv vermeiden?

Mary-Kate Olsen
Freigeben: 2024-12-27 05:29:13
Original
187 Leute haben es durchsucht

How Can I Effectively Avoid MySQL Deadlocks in an Online User Table?

Vermeiden von MySQL-Deadlocks in einer Tabelle von Online-Benutzern

Das Auftreten der Fehlermeldung „Deadlock beim Versuch, eine Sperre zu erhalten; versuchen Sie, die Transaktion neu zu starten“ gefunden kann ein frustrierendes Problem sein. Solche Deadlocks entstehen, wenn mehrere Transaktionen in widersprüchlicher Reihenfolge versuchen, Sperren für Ressourcen zu erlangen. Um dieses Problem zu lösen, ziehen Sie die folgenden Lösungen in Betracht:

Sortiervorgänge

Deadlocks treten häufig aufgrund von Vorgängen auf, die versuchen, Schlüssel in unterschiedlicher Reihenfolge zu sperren. Stellen Sie eine konsistente Reihenfolge für die Schließschlüssel her, indem Sie Ihre Abfragen entsprechend sortieren. Wenn Sie beispielsweise mehrere Abfragen haben, die sowohl Schlüssel(1) als auch Schlüssel(2) sperren, stellen Sie sicher, dass sie die Sperren immer in derselben Reihenfolge erhalten.

Abfrage DELETE anordnen

Ihre DELETE-Abfrage sollte auch so geändert werden, dass sie in aufsteigender Reihenfolge funktioniert. Die folgende optimierte Abfrage erreicht dies:

DELETE FROM onlineusers 
WHERE id IN (
    SELECT id FROM onlineusers
    WHERE datetime < NOW() - INTERVAL 900 SECOND 
    ORDER BY id
) u;
Nach dem Login kopieren

Automatische Client-Wiederholungsversuche

Die MySQL-Dokumentation empfiehlt automatische Client-Wiederholungsversuche bei Deadlocks. Implementieren Sie diese Logik in Ihrem Client-Code und legen Sie eine bestimmte Anzahl von Wiederholungsversuchen fest (z. B. 3), bevor Sie aufgeben.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Deadlocks in einer Online-Benutzertabelle effektiv vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage