töte alle Abfragen - MySQL


17

Manchmal muss ich während einer SNAFU kill query xxxxxxxzwanzig oder dreißig Mal laufen . Fehlt kill allmir irgendein Befehl?

Aufgrund dessen, dass ich nicht gerne tippe.


Server neu starten?
Derek Downey

@DTest - geht das mit einer Abfrage? Ich habe keinen direkten Serverzugriff.
JIStone

Dies ist eine Frage, die sich für andere Entwickler und Datenbankadministratoren als nützlich erweisen kann (+1) !!!
RolandoMySQLDBA

Antworten:


15

Über die Linux-Befehlszeile

for PROC_TO_KILL in `mysql -h... -u... -p... -A --skip-column-names -e"SHOW PROCESSLIST" | grep -v "system user" | awk '{print $1}'` ; do mysql -h... -u... -p... -A --skip-column-names -e"KILL QUERY ${PROC_TO_KILL}" ; done

Sie können die Option grep im Header der for-Schleife ändern, um einen bestimmten Benutzer oder eine bestimmte Zeichenfolge in der Abfrage zu suchen.

Wenn Sie MySQL 5.1 haben, dessen Prozessliste sich in der INFORMATION_SCHEMA befindet, können Sie dies tun, um die KILL QUERY-Befehle in großen Mengen aus dem mysql-Client heraus zu generieren:

SELECT GROUP_CONCAT(CONCAT('KILL QUERY ',id,';') SEPARATOR ' ') KillQuery
FROM information_schema.processlist WHERE user<>'system user'\G

Sie können WHERE-Klauseln für das INFO-Feld verwenden, um nach einer bestimmten Abfrage zu suchen, das TIME-Feld für lang laufende Abfragen oder das DB-Feld für eine bestimmte Datenbank.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.