© DrHitch/Shutterstock.com
Datenbank-Tuning

1 MySQL Queries optimieren


Slow Queries in MySQL finden und beschleunigen

Trotz des Anlegens normalisierter Tabellenstrukturen und des Setzens geeigneter Indizes können in MySQL Queries generiert werden, deren Ausführung einige Sekunden dauert. Bei einem Einsatz im Web sind solche Antwortzeiten nicht akzeptabel und zumeist durch einfaches Umstellen der Abfragen optimierbar – vorausgesetzt man erkennt überhaupt, dass Slow Queries im System vorhanden sind.

Die Geschwindigkeit einer Datenbank ist von vielen Faktoren abhängig. Die Arbeit beginnt hier bereits beim Design der Datenbank, da sowohl Struktur als auch Indizes maßgeblich zur Geschwindigkeit von Queries beitragen. Aber selbst wenn man alles richtig gemacht hat, kann es beim Vorhandensein großer Datenmengen – zum Beispiel bei komplexen Joins, aber auch bei der Nutzung von Foreign Keys (InnoDB) – vorkommen, dass eine Query eine Rechenleistung von einigen Sekunden verschlingt. Hierbei gibt es keine festen Regeln, wann man in eine solche Falle gerät, aber die Optimierungsmöglichkeiten in MySQL sind diesbezüglich schier unendlich.

Anstatt das Übel an der Wurzel zu packen, wird in der Regel mit einem Caching gearbeitet. Dies erfüllt zwar seinen Zweck, funktioniert aber nur so lange man nicht auf Echtzeitdaten angewiesen ist. Der Benutzer wäre zum Beispiel nicht sehr erfreut, wenn Facebook seinen Newsfeed nur einmal pro Stunde aktualisieren würde.

Erschwerend kommt bei Geschwindigkeitseinbußen dieser Art hinzu, dass man sie in der Regel erst Monate nach Inbetriebnahme bemerkt. Nämlich genau dann, wenn aufgrund der Benutzerzahlen die Anzahl der Queries zu groß wird, oder die Datenmenge exponenziell angestiegen ist. Den Fehler wird man in einer lokalen Entwicklungsumgebung mit begrenzten Datensätzen nicht aufspüren, unter Umständen hilft es noch nicht einmal, die Daten zu spiegeln. Stattdessen muss ein genaues Monitoring des Servers über einen längeren Zeitraum erfolgen. MySQL bietet hierfür die notwendigen Werkzeuge.

Was sind Slow Queries und wie entstehen sie?

Die Definition, was eine Slow Query ist, bleibt jedem selbst überlassen. Im Falle von MySQL ist die maximale Ausführungszeit, die erreicht werden muss, damit eine Query als Slow Query gilt, in der Konfigurationsdatei einstellbar. Dies macht auch durchaus Sinn, da je nach Anwendungsfall verschiedene Ausführungszeiten akzeptiert werden können. Im Frontend einer Webanwendung geht es zum Beispiel nur um eine reine Geschwindigkeitsoptimierung, wohingegen man im Backend bei statistis...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang