DBAtlas · Atlas für Datenbankbetrieb

Kurzzeitig ein vollständiges Slow Log aufzeichnen und mit pt-query-digest analysieren

MySQLPerformance

Befehl

-- 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.log

Was 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).

In DBAtlas öffnen →

Verwandte Einträge