it-swarm-eu.dev

zabít všechny dotazy - MySQL

Někdy během a SNAFU musím spustit kill query xxxxxxx dvacet nebo třicetkrát. Jakýkoli druh kill all příkaz mi chybí?

Kvůli tomu, jak se mi nelíbí psaní.

17
JIStone

Z příkazového řádku systému Linux

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

Můžete změnit možnost grep v záhlaví smyčky for, abyste v dotazu našli konkrétního uživatele nebo konkrétní řetězec.

Pokud máte MySQL 5.1, kde je seznam procesů v souboru INFORMATION_SCHEMA, můžete to provést a hromadně vygenerovat příkazy KILL QUERY z klienta mysql:

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

Můžete provést WHERE klauzule proti poli INFO a vyhledat konkrétní dotaz, pole TIME proti dlouhodobým dotazům nebo pole DB proti konkrétní databázi.

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