Eine langsame Website ist oft auf ineffiziente Datenbankqueries zurückzuführen. Das MySQL Slow Query Log registriert, welche Queries länger dauern als ein eingestellter Schwellenwert, sodass du genau siehst, wo die Verzögerung entsteht. In diesem Artikel liest du, wie du das Log aktivierst, wie du den Inhalt mit Tools wie mysqldumpslow und pt-query-digest interpretierst, und welche Schritte du unternimmst, um langsame Queries tatsächlich zu verbessern.
Was ist das Slow Query Log und wann nutzt du es
Das Slow Query Log ist eine Logdatei, in der MySQL (oder MariaDB) jede Query erfasst, die länger dauert als ein von dir eingestellter Schwellenwert, die sogenannte long_query_time. Standardmäßig ist diese Funktion deaktiviert, da Logging immer einen kleinen Overhead mit sich bringt. Dennoch lohnt sich die Aktivierung sehr, sobald du merkst, dass Seiten langsam laden, ein CMS wie WordPress oder Magento langsamer reagiert als erwartet, oder dein Server unter hoher CPU-Last steht, während die Besucherzahl nicht gestiegen ist.
Das Log liefert pro Query unter anderem die Ausführungszeit, die Anzahl der untersuchten Zeilen und das tatsächliche SQL-Statement. Damit kannst du zwischen gelegentlichen Spitzen und strukturell schlecht performenden Queries unterscheiden, zum Beispiel durch einen fehlenden Index oder eine Query, die eine komplette Tabelle scannt, anstatt einen Index zu nutzen.
Slow Query Log aktivieren und konfigurieren
Auf den meisten Servern passt du die MySQL-Konfiguration in der Datei my.cnf oder über eine Verwaltungsoberfläche wie Plesk an. Die wichtigsten Einstellungen sind:
slow_query_log = 1um das Logging zu aktivierenslow_query_log_file = /pfad/zur/slow-query.logfür den Speicherort der Logdateilong_query_time = 1um Queries zu protokollieren, die länger als 1 Sekunde dauern; passe dies an einen Wert an, der zu deiner Situation passtlog_queries_not_using_indexes = 1um auch Queries zu protokollieren, die keinen Index nutzen, selbst wenn sie schnell sind
Nach Anpassung der Konfiguration startest du den MySQL-Dienst neu. Beachte, dass das Log auf einem stark frequentierten Server schnell wachsen kann, also kontrolliere die Dateigröße regelmäßig oder rotiere das Log automatisch über logrotate.
Das Log lesen und analysieren
Ein rohes Slow Query Log ist schwer auf einen Blick zu überblicken, besonders bei viel Traffic. Glücklicherweise gibt es Tools, die das Log zusammenfassen und die problematischsten Queries oben anzeigen.
mysqldumpslow ist standardmäßig enthalten und gruppiert ähnliche Queries, sodass du in einer Übersicht siehst, welche Query am häufigsten vorkommt und im Durchschnitt am längsten dauert. Ein Beispielbefehl ist mysqldumpslow -s t -t 10 /pfad/zur/slow-query.log, dies zeigt die zehn langsamsten Query-Gruppen sortiert nach Zeit.
pt-query-digest, Teil des Percona Toolkit, liefert eine umfangreichere Analyse, unter anderem mit dem Prozentsatz der Gesamtzeit, den ein Querytyp einnimmt, und Details zu untersuchten versus zurückgegebenen Zeilen. Das ist nützlich, wenn du tiefer graben möchtest, als mysqldumpslow bietet.
Achte bei der Analyse vor allem auf Queries mit einer hohen Anzahl untersuchter Zeilen im Verhältnis zur Anzahl zurückgegebener Zeilen. Das ist oft ein Signal dafür, dass ein Index fehlt. Auch wiederholte identische Queries, zum Beispiel aus einem CMS, können auf ein Plugin oder Modul hinweisen, das ineffizient mit der Datenbank umgeht.
Langsame Queries lösen
Sobald du weißt, welche Queries problematisch sind, folgt die Optimierungsphase. Dies ist oft Maßarbeit, aber die folgenden Schritte bilden einen guten Ausgangspunkt.
Analysiere die Query mit EXPLAIN
Setze EXPLAIN vor die Query, um zu sehen, welchen Ausführungsplan MySQL wählt und ob ein Index genutzt wird.
Füge fehlende Indizes hinzu
Füge Indizes zu Spalten hinzu, die häufig in WHERE-, JOIN- und ORDER BY-Klauseln vorkommen, aber vermeide übermäßiges Indexieren, da dies Schreibvorgänge verlangsamt.
Schreibe ineffiziente Queries um
Vermeide SELECT *, begrenze Subqueries wo möglich und nutze LIMIT bei großen Ergebnismengen.
Kontrolliere die Tabellenpflege
Führe regelmäßig OPTIMIZE TABLE auf Tabellen mit vielen Updates und Löschungen aus, um Fragmentierung zu begrenzen.
Überwache nach der Anpassung
Lasse das Slow Query Log nach einer Änderung weiterlaufen, um zu kontrollieren, ob die Anpassung tatsächlich Wirkung gezeigt hat.
Auf Serverebene hilft es auch, für schnellen Speicher und ausreichende Ressourcen zu sorgen. Auf einem Server mit NVMe-Speicher und LiteSpeed verarbeitest du Queries ohnehin schon schneller, aber strukturelle Query-Probleme löst du nur mit guter Indexierung und effizientem SQL. In Plesk, wie es beim Webhosting von Tandata verwendet wird, findest du Datenbankverwaltungstools, und bei Unklarheiten kannst du jederzeit über den Support um Hilfe bei der Interpretation eines Logs bitten.
Häufig gestellte Fragen
Wo finde ich die Slow-Query-Log-Datei?
Der Speicherort steht in der MySQL-Konfiguration bei slow_query_log_file. Standardmäßig befindet sich dies oft im MySQL-Datadirectory, aber bei Shared Hosting kann der Speicherort abweichen.
Beeinflusst das Slow Query Log die Serverleistung?
Logging bringt einen kleinen Overhead mit sich, aber bei einem angemessenen Schwellenwert ist dieser Effekt in der Regel vernachlässigbar im Vergleich zu den Vorteilen des Einblicks in langsame Queries.
Was ist ein guter Wert für long_query_time?
Das hängt von deiner Anwendung ab. Für die meisten Websites sind 1 bis 2 Sekunden ein guter Ausgangspunkt, danach kannst du auf Basis dessen, was du im Log siehst, weiter verfeinern.
Kann ich das Slow Query Log bei Shared Hosting nutzen?
Das hängt von den Rechten ab, die du auf dem Server hast. Bei verwaltetem Hosting kann der Anbieter dies oft für dich einsehen oder über das Verwaltungspanel aktivieren.
Hilft ein Index immer gegen langsame Queries?
Nicht immer. Ein Index hilft dabei, Zeilen schneller zu finden, aber bei komplexen Joins oder schlecht geschriebenen Queries ist das Umschreiben der Query manchmal effektiver als reines Indexieren.
Fazit
Das MySQL Slow Query Log ist ein leistungsstarkes Hilfsmittel, um langsame Queries aufzuspüren, bevor sie deine Website spürbar verlangsamen. Indem du das Log korrekt aktivierst, mit Tools wie mysqldumpslow oder pt-query-digest analysierst und anschließend gezielt Indizes hinzufügst oder Queries umschreibst, verbesserst du die Datenbankleistung nachhaltig. Kombiniere dies mit schneller Infrastruktur für das beste Ergebnis.