it-swarm.com.de

töte alle Abfragen - MySQL

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.

17
JIStone

Ü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.

15
RolandoMySQLDBA
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/

5
philfreo