2009-07-27 8 views

Antwort

2

MySQL 5.0.x unterstützt nur den Befehl "SHOW FULL PROCESSLIST". Es gibt keine Möglichkeit, die Prozessliste abzufragen und zu filtern, da es sich um eine SQL-Tabelle handelt, z. SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST. Diese Fähigkeit wurde in MySQL 5.1+ hinzugefügt.

MySQL hat einen KILL-Befehl, der entweder eine Abfrage oder die gesamte Verbindung abbrechen kann.

Noch benötigen Sie ein Ruby- oder Perl-Skript, das "SHOW FULL PROCESSLIST" ausführt, identifiziert, welche Abfragen "zu lang" ausgeführt werden, und dann die entsprechenden KILL-Befehle ausgibt.

Sie können dies auch über die Befehlszeile, z.

mysqladmin processlist 
mysqladmin kill 
2

Sie führen kann ...

SHOW FULL PROCESSLIST; 

... Sie zeigen die aktuell ausgeführten Abfragen.

Sie sollten jedoch nicht nur die Verbindungen beenden, da dies zu Datenintegritätsproblemen führen kann. Stattdessen sollten Sie die Prozesslistenausgabe verwenden, um hervorzuheben, wo potenzielle Probleme liegen können, bevor die Probleme an der Quelle behoben werden. (Es ist ein (sehr) armer Mann MySQL Enterprise Monitor in diesem Sinne.)

0

Der Befehl "mysqladmin Prozessliste" wird die aktuelle Verbindung zeigen, und eine Zeitspalte, die die Zeit seit der letzten Aktivität angibt. Sie können das gleiche mit dem SQL-Befehl "SHOW FULL PROCESSLIST;"

3

Installieren Sie den RubyGem mysql_manager (sudo gem install mysql_manager) und dann einen Befehl wie folgt ausführen:

mysql-manager --kill --kill:user api --kill:max-query-time 30 --log:level DEBUG 

Weitere Optionen laufen mysql-manager --help.

Möglicherweise müssen Sie eine Alternative --db:dsn, --db:username oder --db:password angeben.

Lesen Sie mehr hier: https://github.com/osterman/mysql_manager

Verwandte Themen