Manchmal muss ich während eines SNAFU ich muss kill query xxxxxxx
zwanzig oder dreißig Mal. Jede Art von kill all
Befehl fehlt mir?
Wegen der Tatsache, dass ich nicht gerne tippe.
Ü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 finden.
Wenn Sie MySQL 5.1 haben, in dem sich die Prozessliste in 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 ausführen, um nach einer bestimmten Abfrage zu suchen, das TIME-Feld für lange laufende Abfragen oder das DB-Feld für eine bestimmte Datenbank.
mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)
mysql> source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)
http://www.mysqlperformanceblog.com/2009/05/21/mass-killing-of-mysql-connections/