Behebung von „Wartezeitüberschreitung beim Sperren“ für eine blockierte MySQL-Tabelle
Kürzlich ist ein Problem aufgetreten, bei dem die Ausführung eines SQL-Updates ohne WHERE-Klausel dazu führte in einem erweiterten Tischschloss. Dies führte zu dem Fehler „Wartezeit für Sperre überschritten; versuchen Sie, die Transaktion neu zu starten“, während versucht wurde, einen betroffenen Index zu löschen.
Um dieser Situation zu begegnen, wird empfohlen, alle hängengebliebenen Transaktionen zu identifizieren und zu beenden. Dies kann erreicht werden, indem die laufenden Threads mit dem Befehl SHOW PROCESSLIST in der MySQL-Befehlszeilenschnittstelle untersucht werden.
Feststeckende Threads finden und beenden
Führen Sie Folgendes aus Befehl:
SHOW PROCESSLIST;
Um einen hängengebliebenen Thread zu beenden, führen Sie den KILL-Befehl gefolgt von seiner ID aus, wie gezeigt unten:
KILL <thread ID>;
Beispiel
Um beispielsweise einen Thread mit der ID 115 zu beenden, verwenden Sie den folgenden Befehl:
KILL 115;
Sobald die hängengebliebenen Threads beendet wurden, sollte die Tabelle entsperrt werden und der Indexlöschvorgang kann normal fortgesetzt werden.
Das obige ist der detaillierte Inhalt vonWie kann das Problem behoben werden, dass das Sperrwartezeitlimit überschritten wurde, wenn eine MySQL-Tabelle feststeckt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!