MySQL-Deadlock bezieht sich auf zwei oder mehr Transaktionen, die sich gegenseitig auf derselben Ressource belegen und anfordern, die voneinander belegten Ressourcen zu sperren, was zu einem Teufelskreis führt. Die InnoDB-Speicher-Engine kann Deadlock-Zirkelabhängigkeiten erkennen und sofort einen Fehler zurückgeben. Ein Deadlock kann nur durch ein teilweises oder vollständiges Rollback einer der Transaktionen aufgehoben werden.
Was ist ein Deadlock? Wie kam es dazu?
Deadlock bezieht sich auf zwei oder mehr Transaktionen, die sich gegenseitig auf derselben Ressource belegen und anfordern, die voneinander belegten Ressourcen zu sperren, was zu einem Teufelskreis führt.
(Empfohlenes Tutorial: MySQL-Tutorial )
Deadlock kann auftreten, wenn eine Transaktion versucht, Ressourcen in einer anderen Reihenfolge zu sperren. Ein Deadlock kann auch auftreten, wenn mehrere Transaktionen gleichzeitig dieselbe Ressource sperren.
Das Verhalten und die Reihenfolge von Sperren hängen mit der Speicher-Engine zusammen. Bei der Ausführung von Anweisungen in der gleichen Reihenfolge kommt es bei einigen Speicher-Engines zu einem Deadlock, bei anderen nicht. Die Ursache für den Deadlock ist zweierlei: ein echter Datenkonflikt und die Art und Weise, wie die Speicher-Engine implementiert ist.
Deadlocks erkennen
Das Datenbanksystem implementiert verschiedene Deadlock-Erkennungs- und Deadlock-Timeout-Mechanismen. Die InnoDB-Speicher-Engine kann Deadlock-Zirkelabhängigkeiten erkennen und sofort einen Fehler zurückgeben.
Deadlock-Wiederherstellung
Nachdem ein Deadlock aufgetreten ist, kann der Deadlock nur durch teilweises oder vollständiges Zurücksetzen einer der Transaktionen aufgehoben werden.
Die aktuelle Art und Weise, wie InnoDB mit Deadlocks umgeht, besteht darin, die Transaktion mit der geringsten exklusiven Sperre auf Zeilenebene zurückzusetzen. Daher müssen Transaktionsanwendungen beim Entwurf darüber nachdenken, wie mit Deadlocks umgegangen werden soll. In den meisten Fällen müssen nur die Transaktionen erneut ausgeführt werden, die aufgrund von Deadlocks zurückgesetzt wurden.
Das obige ist der detaillierte Inhalt vonWas bedeutet MySQL-Deadlock?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!