Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 4 Min.

DBAs tunen die falsche Abfrage

Thorsten Strauß arbeitet seit Jahren mit SQL Server-Systemen unter Last – und beobachtet immer wieder denselben Fehler: Der DBA schaut auf die Query, die am längsten braucht. Dabei ist die oft nur das Opfer, nicht der Täter.

Wer ein Performance-Problem auf dem SQL Server hat, greift oft zuerst zum Query Store. Verständlich – das Tool ist gut, visuell aufgeräumt, zeigt Ressourcenverbrauch auf der Zeitachse. Aber genau hier fängt das Problem an. Der Query Store zeigt, welche Abfrage gerade die meiste CPU oder das meiste Memory zieht. Was er nicht zeigt: ob diese Abfrage wirklich schuld ist.

Thorsten Strauß bringt das an einem Beispiel auf den Punkt, das jeder DBA kennt, aber nicht jeder richtig deutet: Locking und Blocking. Eine Abfrage verändert einen Datensatz und hält dabei einen exklusiven Lock. Eine zweite Abfrage will denselben Datensatz lesen – und wartet. Im Query Store sieht das so aus, als wäre die wartende Abfrage das Problem, weil ihre Execution-Time durch die Wartezeit in die Höhe schießt. Die eigentliche Ursache, nämlich die schreibende Abfrage, läuft unauffällig durch. Wer jetzt die lesende Query tuned, hat Zeit verschwendet.

Bevor man also überhaupt in den Query Store schaut, empfiehlt Strauß den Blick auf die DMVs. Dynamic Management Views sammeln seit dem letzten SQL-Server-Neustart Metadaten und Wartestatistiken – und die zeigen einem erfahrenen DBA schnell, ob ein dominanter Wartetyp vom Typ LCK auf Locking-Probleme hindeutet, ob eine offene Transaktion im Hintergrund sitzt, oder ob die TempDB bei Optimistic Concurrency Control gerade zum Flaschenhals wird. Erst wenn die DMVs eine Richtung vorgeben, macht es Sinn, gezielter mit Extended Events zu tracken.

Extended Events sind dabei nicht einfach ein Ersatz für den alten SQL Server Profiler – sie sind eine andere Kategorie. Der Profiler erzeugt selbst CPU-Last auf dem System, das er analysieren soll. Auf einem Server, der ohnehin schon knirscht, ist das kontraproduktiv. Extended Events sind deutlich leichter, gehen tiefer und lassen sich präzise auf bestimmte Event-Typen eingrenzen. Trotzdem: Strauß sieht noch immer Umgebungen, in denen der Profiler im Einsatz ist – obwohl Microsoft ihn seit Jahren als Deprecated markiert hat.

Ein weiteres Muster, das Strauß beschäftigt, ist der reflexartige Griff zu den Automatisierungsfeatures im SQL Server. Plan Regression als Beispiel: Der Query Store zeigt, dass eine Abfrage jetzt einen schlechteren Plan verwendet als früher. Microsoft empfiehlt, den besseren Plan zu forcieren. Klingt sinnvoll – ist aber eine Falle, wenn die Abfrage je nach übergebenem Parameter unterschiedliche Pläne braucht. Wer jetzt einen Plan fest einfriert, verbaut sich die Möglichkeit, das eigentliche Problem zu lösen, zum Beispiel durch einen passenden Index. Der forcierte Plan läuft dann auch dann suboptimal weiter, wenn der Index längst vorhanden wäre.

Das zieht sich durch: Features sind dann großartig, wenn man versteht, was sie tun. Und was sie nicht tun. Gerade bei unpredictable Workload Spikes – dem Black-Friday-Problem, das sich nicht wegtunen lässt – hilft kein Feature der Welt, wenn die Grundlage fehlt. Was hilft: eine Testinstanz mit simulierter Zufallsworkload, auf der man Blockaden und Ressourcenkonflikte sichtbar macht, bevor sie im Produktivbetrieb zuschlagen. Nicht eine einzelne Abfrage schnell machen. Die Gesamtauslastung der Workload senken.

Das ist, kurz gefasst, Thorstens Credo: Nicht die Query tunen. Die Workload tunen.

Thorsten Strauß spricht auf der DWX 2026 in Mannheim. DWX 2026, 29. Juni bis 2. Juli 2026, Mannheim. https://www.developer-world.de/dwx

Neueste Beiträge

Wissen trifft Community - DWX 2026
Wohlfühlzeit mit intensivem Lernen für Entwickler:innen auf der DWX in Mannheim.
9 Minuten
16. Apr 2026
SQLite in ein .NET-Projekt integrieren - SQLite für .NET-Entwickler, Teil 2
Der eleganteste Aspekt von SQLite in .NET ist die Migration vom Prototyp zur Produktion.
6 Minuten
libSQL und Turso: SQLite für verteilte Systeme - SQLite für .NET-Entwickler, Teil 3
libSQL und Turso lösen die größte Einschränkung von SQLite: die Bindung an eine einzelne Instanz.
6 Minuten
15. Apr 2026

Das könnte Dich auch interessieren

SQLite: Wenn weniger mehr ist - SQLite für .NET-Entwickler, Teil 1
Für Entwicklerteams, die jeden Tag mit der Komplexität von Kubernetes, Cloud-Datenbanken und Terraform-Skripten ringen, liegt der eigentliche Gewinn von SQLite in der architektonischen Vereinfachung.
6 Minuten
SQLite in ein .NET-Projekt integrieren - SQLite für .NET-Entwickler, Teil 2
Der eleganteste Aspekt von SQLite in .NET ist die Migration vom Prototyp zur Produktion.
6 Minuten
Pflichterfüllung - Strukturierte elektronische Rechnungen (E-Invoicing) mit .NET selbst implementiert
.NET-Entwickler können die ab 2025 im B2B-Markt einsetzende Pflicht zur strukturierten elektronischen Rechnungsstellung und -annahme mit Open-Source-Lösungen erfüllen.
17 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige