Kurzzeitig ein vollständiges Slow Log aufzeichnen und mit pt-query-digest analysieren
MySQLPerformanceBefehl
-- Temporary full capture (e.g. 10 minutes); only new connections are affected
SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log';
SET GLOBAL log_slow_extra = ON;
SET GLOBAL long_query_time = 0;
SET GLOBAL slow_query_log = ON;
-- ... then return to the normal threshold
SET GLOBAL long_query_time = 1;
# Shell: top 10 queries by total time
pt-query-digest --limit=10 --order-by=Query_time:sum --noversion-check /var/lib/mysql/slow.log > /tmp/digest.txt
pt-query-digest --since='2026-10-08 09:00:00' --until='2026-10-08 10:00:00' --filter '$event->{db} && $event->{db} eq "shop"' --report-format=profile --noversion-check /var/lib/mysql/slow.logWas es tut
Zeichnet mit long_query_time=0 für ein kurzes Zeitfenster jede Abfrage auf; pt-query-digest gruppiert sie nach Fingerprint und erstellt einen sortierten Bericht mit Gesamt- / Durchschnitts- / p95-Zeit, untersuchten Zeilen und einer Beispielabfrage.
Wann einsetzen
Wenn performance_schema-Digests nicht ausreichen: Analyse mit vollständigem Anweisungstext und echten Parametern, Vorher-Nachher-Vergleich rund um ein Deployment, Offline-Auswertung auf einem anderen Host.
Vorsicht
long_query_time wird beim Start einer Session aus dem globalen Wert übernommen; bestehende Pool-Verbindungen sehen den neuen Schwellenwert erst nach einem Reconnect. long_query_time=0 schreibt auf einem ausgelasteten Server Tausende Einträge pro Sekunde; behalte Speicherplatz und IO im Blick, halte das Fenster kurz und setze den Wert immer zurück. Kopiere die Datei zur Analyse von der Produktion weg. Der Benutzer, der pt-query-digest ausführt, braucht Lesezugriff auf die Datei (Modus 640, mysql:mysql).
Verwandte Einträge
- Die teuersten Abfragen finden (performance_schema digest)
- Was läuft gerade: aktive Sessions, Latenz, Sperren und Transaktionen (sys.session)
- 'Waiting for table metadata lock' diagnostizieren und den eigentlichen Blocker finden
- InnoDB-Deadlocks analysieren und alle protokollieren
- Lang laufende Transaktionen und History List Length (Purge-Rückstand)
- Einen schlechten Plan mit EXPLAIN ANALYZE und dem Optimizer Trace untersuchen