Der Befehl mysqladmin processlist
wird verwendet, um die aktuell aktiven Abfragen in einer MySQL/MariaDB-Datenbank anzuzeigen. Dieser Befehl ist ideal, um zu verstehen, welche Abfragen die Systemressourcen belasten, insbesondere in Situationen mit hoher CPU- oder Festplattenauslastung.
Wir beginnen mit dem folgenden Befehl:
mysqladmin -u root -p processlist
Nachdem Sie den Befehl ausgeführt haben, werden Sie nach dem Passwort gefragt und anschließend werden alle laufenden Prozesse aufgelistet:
Beispielausgabe:
+----+------+-----------+----------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----------+---------+------+-------+------------------+
| 12 | user | localhost | mydb | Query | 50 | Sending data | SELECT * FROM large_table |
| 13 | user | localhost | mydb | Sleep | 20 | | NULL |
Hier sind die zu beachtenden Spalten:
-
Time: Zeigt an, wie lange die Abfrage bereits läuft. Hohe Werte können das System belasten.
-
Command: "Query" sind aktive Abfragen. "Sleep" sind Sitzungen, bei denen die Verbindung offen ist, aber keine Operationen ausgeführt werden.
-
Info: Die vollständige SQL-Abfrage, die ausgeführt wird, wird hier angezeigt.
Identifizieren von Abfragen mit hoher Ressourcenauslastung:
grep
und awk
können verwendet werden, um die processlist
-Ausgabe zu filtern:
mysqladmin -u root -p processlist | grep -i select
Um nur die lang laufenden anzuzeigen:
mysql -u root -p -e "SELECT * FROM information_schema.processlist WHERE TIME > 30 ORDER BY TIME DESC;"
Mit diesem Befehl können Sie alle Abfragen sehen, die seit mehr als 30 Sekunden laufen.
Für eine detailliertere Überwachung:
Um eine periodische Überwachung durchzuführen:
watch -n 2 'mysqladmin -u root -p processlist'
Dieser Befehl zeigt die laufenden Prozesse alle 2 Sekunden erneut an.
Beenden von Abfragen mit hoher Intensität:
Einige Abfragen können sehr lange dauern und das System blockieren. Um die Abfrage zu beenden:
KILL 12;
Hier ist 12 der Wert in der Spalte Id
.
Mit diesen Methoden können Sie Abfragen identifizieren und eingreifen, die Systemressourcen auf Ihrem MySQL/MariaDB-Server verbrauchen. Insbesondere in großen Datenbanken ist der Befehl processlist
für die Live-Performance-Überwachung sehr wertvoll.