Para crib os melhores comentários de a opinião de Percona sobre isso :
Eu prefiro o seguinte, uma vez que irá matá-los de uma forma multi-threaded ... (às vezes matando uma única consulta pode demorar um pouco)
for i in $(mysql -uroot -pPASS -e ’show processlist’ | grep ’search_term’ | awk ‘{print $1}’); do
mysql -uroot -pPASS -e “kill $i” &
done
Um procedimento armazenado INFORMATION_SCHEMA.PROCESSLIST que é um pouco detalhado para copiar.
Se a lista information_schema.processlist não existir na sua versão do MySQL, isso funcionará em um script linux:
#!/bin/bash for each in 'mysqladmin -u root -prootpwd processlist | awk ‘{print $2, $4, $8}’ | grep $dbname | grep $dbuser | awk ‘{print $1}’'; do mysqladmin -u root -prootpwd kill $each; done
Eu faço isso:
mysqladmin proc | grep Sleep | sort -r -n -k6 | awk {’print $1; ‘} | xargs mysqladmin kill
ou algo nesse sentido…
Como Dan C menciona em sua resposta a essa pergunta , a remoção de SELECTS é significativamente mais segura do que matar comandos de gravação no meio do fluxo, já que você pode perder integridade de dados e / ou chaves estrangeiras.