Datenbank-Beratung

Datenbank-Performance: langsame Abfragen finden und beheben

Seiten laden zäh, Berichte laufen bis in die Nacht, und zum Monatsabschluss steigt die Last: Meist stecken wenige Ursachen dahinter. Sortia Labs misst, wo die Zeit tatsächlich verloren geht, in der Datenbank, im Netz oder in der Anwendung, und belegt jede Verbesserung mit Zahlen von vorher und nachher.

  • Datenbank langsam
  • SQL-Abfragen optimieren
  • Fehlende Indizes
  • Ausführungspläne
  • Datenbank-Tuning
Datenbank-Performance

Wo wir nach der verlorenen Zeit suchen

Die teuren Abfragen

Die Statistiken der Datenbank zeigen, auf welche Abfragen sich die Laufzeit verteilt. Oft ist es keine einzelne lange Abfrage, sondern eine kurze, die tausendfach pro Minute läuft.

Ausführungspläne

EXPLAIN zeigt, ob die Datenbank einen Index nutzt oder ganze Tabellen liest und wo sie sich bei der Zahl der Zeilen verschätzt. Danach passen wir Indizes, Abfragen und Statistiken an.

Die Anwendung

Hunderte kleine Abfragen pro Seitenaufruf (das N+1-Problem), fehlende Paginierung oder offen gelassene Transaktionen entstehen im Code, nicht in der Datenbank. Weil wir selbst Software entwickeln, schlagen wir die Änderung am Code gleich mit vor.

Sperren und Wartezeiten

Wenn Abfragen nicht rechnen, sondern warten, liegt es oft an Sperren, langen Transaktionen oder einem erschöpften Verbindungspool. Das zeigen Warteereignisse, nicht die CPU-Auslastung, und daraus wird sichtbar, welche Sitzung welche blockiert.

Konfiguration und Hardware

Pufferspeicher, Speicher für Sortierungen und die Zahl der Verbindungen passen oft nicht mehr zur heutigen Datenmenge, und langsame Laufwerke bremsen Schreibzugriffe. Bevor Sie größere Server kaufen, prüfen wir, ob die vorhandenen richtig eingestellt sind.

Messen nach der Änderung

Antwortzeiten und Last vor und nach jeder Maßnahme, als Grafik im Monitoring. So sehen Sie, ob eine Änderung wirkt, und bemerken früh, wenn wachsende Datenmengen später wieder bremsen.

Vorgehen

Vom Messwert zur Verbesserung

  1. 1

    Messen

    Wir zeichnen eine typische Lastphase auf: Abfragen, Wartezeiten und Ressourcen, bei Bedarf genau dann, wenn es langsam wird, zum Beispiel während eines nächtlichen Imports.

  2. 2

    Ursachen ordnen

    Die Funde sortieren wir nach Wirkung und Aufwand. Häufig bringen wenige Änderungen einen Großteil der Verbesserung, und diese setzen wir zuerst um.

  3. 3

    Ändern und prüfen

    Jede Änderung testen wir mit realistischen Datenmengen und messen erneut. Was nicht hilft, nehmen wir zurück, damit kein unnötiger Index die Schreibzugriffe bremst.

Fragen zu Datenbank-Performance

Warum ist unsere Datenbank plötzlich langsam, obwohl sich nichts geändert hat?

Meist hat sich doch etwas geändert, nur unbemerkt: Eine Tabelle ist über eine Schwelle gewachsen, ab der die Datenbank einen anderen Plan wählt, Statistiken sind veraltet, ein Update hat Standardwerte verschoben, oder eine neue Funktion stellt Abfragen in einer Schleife. Ein Vergleich der Ausführungspläne zeigt meist, wo.

Hilft ein größerer Server?

Manchmal, für eine Weile. Liest eine Abfrage eine ganze Tabelle, macht doppelte Rechenleistung sie höchstens doppelt so schnell, ein passender Index dagegen oft um ein Vielfaches. Wir prüfen deshalb zuerst Abfragen und Einstellungen und empfehlen neue Hardware nur, wenn die Messwerte dafür sprechen.

Stört die Analyse den laufenden Betrieb?

Kaum. Wir nutzen vor allem Statistiken, die die Datenbank ohnehin sammelt, und testen Änderungen an einer Kopie. Was produktiv geändert werden muss, planen wir mit Ihnen, bei Bedarf in einem Wartungsfenster.

Ab welcher Datenmenge wird eine Datenbank langsam?

Eine feste Grenze gibt es nicht. Mit passenden Indizes und einem durchdachten Datenmodell können auch Tabellen mit vielen Millionen Zeilen schnell bleiben. Probleme entstehen eher durch Abfragen, die mit der Datenmenge mitwachsen, etwa Listen ohne Paginierung, und durch Wartung, die nicht mithält.

Lassen Sie uns messen, wo die Zeit verloren geht.

Schicken Sie uns ein Beispiel: eine langsame Seite, einen Bericht oder eine Abfrage. Wir beschreiben, wie wir der Ursache nachgehen würden.