140 Stimmen

Wie kann ich alle Prozesse in Mysql "show processlist" beenden?

Denn ich sehe dort eine Menge Prozesse, und die Spalte "Zeit" zeigt für alle große Werte an.

9voto

Iberê Punkte 1181

Kürzlich musste ich dies tun, und ich kam auf folgende Lösung

-- GROUP_CONCAT turns all the rows into 1
-- @q:= stores all the kill commands to a variable
select @q:=GROUP_CONCAT(CONCAT('KILL ',ID) SEPARATOR ';')  
FROM information_schema.processlist 
-- If you don't need it, you can remove the WHERE command altogether
WHERE user = 'user';
-- Creates statement and execute it
PREPARE stmt FROM @q;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Auf diese Weise müssen Sie nicht in einer Datei speichern und alle Abfragen mit einem einzigen Befehl ausführen.

9voto

EcchiOli Punkte 774

Oder... in der Schale...

service mysql restart

Ja, ich weiß, ich bin faul, aber es kann auch praktisch sein.

6voto

mikesl Punkte 2094

Wenn Sie nicht über information_schema:

mysql -e "show full processlist" | cut -f1 | sed -e 's/^/kill /' | sed -e 's/$/;/' ;  > /tmp/kill.txt
mysql> . /tmp/kill.txt

6voto

user3269995 Punkte 59

ALLE SELECT-ABFRAGEN LÖSCHEN

select concat('KILL ',id,';') 
from information_schema.processlist 
where user='root' 
  and INFO like 'SELECT%' into outfile '/tmp/a.txt'; 
source /tmp/a.txt;

4voto

wiebel Punkte 51

Ich würde bash und mysql kombinieren:

for i in $(mysql -Ne "select id from information_schema.processlist where user like 'foo%user' and time > 300;"); do
  mysql -e "kill ${i}"
done

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X