Wie kann man in MySQL eine laufende Abfrage (Query) beenden?

Melden
  1. Einführung in das Beenden von laufenden Abfragen in MySQL
  2. Was bedeutet "KILL QUERY" in MySQL?
  3. Wie findet man die zu beendende Abfrage bzw. den Prozess?
  4. Anwendung des KILL QUERY Befehls
  5. Zusammenfassung

Einführung in das Beenden von laufenden Abfragen in MySQL

In MySQL kann es vorkommen, dass eine Abfrage sehr lange läuft oder hängt. Oft ist es dann notwendig, diese laufende Abfrage gezielt zu beenden, um die Ressourcen zu schonen oder um Fehlerzustände zu beheben. Hierfür bietet MySQL spezielle Befehle, mit denen man bestimmte Prozesse auf dem Server stoppen kann. Insbesondere der Befehl "KILL" ist dabei von zentraler Bedeutung.

Was bedeutet "KILL QUERY" in MySQL?

Der Befehl "KILL QUERY" ermöglicht es, eine aktuell ausgeführte Abfrage eines bestimmten MySQL-Kernel-Threads abzubrechen, ohne die Verbindung des Benutzers komplett zu trennen. Das heißt, die Verbindung zum Datenbankserver bleibt bestehen, aber die momentan laufende Anweisung wird beendet. Dies ist besonders nützlich, wenn eine Abfrage blockiert oder sehr ressourcenintensiv ist, man den Benutzer aber nicht vollständig von der Datenbank trennen möchte.

Wie findet man die zu beendende Abfrage bzw. den Prozess?

Bevor man eine Abfrage beenden kann, muss man die Prozess-ID (Thread-ID) der laufenden Anfrage kennen. Diese bekommt man meist mit dem Befehl "SHOW PROCESSLIST;" angezeigt. Dabei sieht man eine Tabelle mit allen aktiven Verbindungen und den dazugehörigen Informationen wie Benutzer, Host, Datenbank, Status und der ausgeführten Anfrage. Die Spalte "Id" gibt die Thread-ID an, welche für den KILL-Befehl erforderlich ist.

Anwendung des KILL QUERY Befehls

Durch diesen Befehl wird die gerade ausgeführte Abfrage unterbrochen, die Verbindung bleibt jedoch aktiv. Alternativ existiert auch der Befehl "KILL ;", welcher nicht nur die Abfrage beendet, sondern auch die Verbindung komplett trennt. Deshalb ist "KILL QUERY" meist die schonendere Variante.

Zusammenfassung

Mit dem Befehl "KILL QUERY" in MySQL lassen sich bestimmte, gerade laufende Abfragen gezielt abbrechen, ohne dabei die gesamte Benutzerverbindung zu beenden. Dies ist sinnvoll, wenn eine Abfrage zu lange braucht oder Probleme verursacht. Zunächst ermittelt man die Prozess-ID mit "SHOW PROCESSLIST;", danach wird mit "KILL QUERY ;" die gewünschte Abfrage gestoppt. So kann man MySQL-Server besser überwachen und steuern.

0

Kommentare