SpeedupWP

WordPress-Performance mit Plan.

Langsame Datenbankabfragen mit Slow Query Log und EXPLAIN finden

← Zur Wissensdatenbank

Typischer Nutzwert
Hoch
Aufwand
Hoch
Risiko
Mittel
Hosting / Umgebung
VPS/dedizierter Server oder Managed Hosting mit Datenbankdiagnose
Voraussetzungen
Datenbankzugriff, ausreichender Speicher und Datenschutzprüfung
Aussagekraft
hoch
Zuletzt geprüft
17. August 2026

Cookbook: Ziel und Ergebnis

Du priorisierst langsame SQL-Muster nach Gesamtwirkung und verbesserst erst danach Code, Index oder Datenmodell. EXPLAIN erklärt einen Plan, beweist allein aber keine sichere Änderung.

Rezept: Schritt für Schritt

  1. Kurzes Messfenster unter repräsentativer Last wählen; Slow Query Log mit kontrolliertem long_query_time aktivieren.
  2. Log nach Fingerprint gruppieren: Häufigkeit × mittlere Laufzeit ist oft wichtiger als die langsamste Einzelabfrage.
  3. Top-Muster mit URL, Hook/Plugin und Call Stack verbinden. Danach EXPLAIN auf einer sicheren Umgebung ausführen.
  4. Index- oder Query-Änderung auf produktionsnahen Daten testen; Schreibkosten und Speicher berücksichtigen.

Rechenweg oder Entscheidungsregel

Gesamtkosten je Muster = Aufrufe × mittlere Laufzeit\nDB-Zeitanteil (%) = Gesamtkosten Muster / gesamte gemessene DB-Zeit × 100

Praxisbeispiel

Query A läuft 2 s, aber zweimal täglich: 4 s/Tag. Query B läuft 80 ms und 100.000-mal: 8.000 s/Tag. Query B hat Vorrang. Zeigt EXPLAIN einen Full Table Scan über Millionen Zeilen, kann ein passender zusammengesetzter Index helfen – aber nur passend zur WHERE-/ORDER-BY-Reihenfolge.

Prüfen, ob es funktioniert

  • P95/P99 der betroffenen Anfrage sowie Gesamtkosten des Fingerprints sinken.
  • Keine stärkere Schreiblast, längeren Locks oder größere Replikationsverzögerung.
  • Slowlog nach Messung wieder auf Betriebsniveau bzw. aus stellen; sensible Werte schützen.

Rollback

Neue Indizes oder Query-Änderungen über den vorgesehenen Migrationsweg zurücknehmen. Vor Indexentfernung prüfen, ob andere Abfragen ihn verwenden. Slowlog-Konfiguration auf Ausgangswert setzen und kontrolliert neu laden.

Das Problem

Hohe Datenbankzeit kann von einer langsamen Einzelabfrage, tausenden kleinen Abfragen, fehlenden Indizes oder Sperren kommen. Die Größe einer Tabelle allein erklärt das nicht.

Vorgehen

  1. Auf Staging oder zeitlich begrenzt das Slow Query Log mit passender Schwelle aktivieren.
  2. Query-Text, Laufzeit, geprüfte Zeilen und Häufigkeit gruppieren.
  3. Mit EXPLAIN den geschätzten Plan untersuchen.
  4. ANALYZE/EXPLAIN ANALYZE nur kontrolliert verwenden: es führt die Abfrage tatsächlich aus.
  5. Ursache im Plugin, Theme oder Datenmodell beheben; Indexänderungen gegen Schreiblast und Speicher abwägen.

Sicherheit

Logs können personenbezogene oder vertrauliche Parameter enthalten und stark wachsen. Zugriff, Rotation und Löschung festlegen. Auf Shared Hosting den Anbieter um eine zeitlich begrenzte Auswertung bitten.

Erfolgskontrolle

Vergleiche Laufzeit, geprüfte Zeilen, CPU/I/O und Gesamtantwortzeit unter realer Last. Ein Index, der Lesen beschleunigt, kann Schreiben und Speicherverbrauch erhöhen.

Quellen und Prüfstand

Inhalt fachlich geprüft am 17. August 2026. Konkrete Werte sind Ausgangspunkte, keine Universaldosierung.