- Tag 1: 1. Speicherarchitektur und Datenspeicherung
- SQLOS, Buffer Pool und Memory Grants im Überblick
- Aufbau von Data-Pages und Data-Rows
- Daten in Heap- und Index-Strukturen
- Auswirkungen von Datenmanipulation auf die Struktur
- Praxis-Übung: Den physischen Aufbau einer Tabelle und den Buffer-Pool-Zustand untersuchen.
- 2. Indizes verstehen und verwalten
- Gruppierte und nicht gruppierte Indizes
- Abdeckende Indizes und eingeschlossene Spalten
- Fragmentierung, Füllfaktor und Wartung
- Fehlende und ungenutzte Indizes erkennen
- Gefilterte Indizes und berechnete Spalten
- Praxis-Übung: Für eine langsame Abfrage einen passenden Index entwerfen und prüfen.
- 3. Der Abfrage-Optimierer, Pläne und Statistiken
- Aufgabe und Arbeitsweise des Optimierers
- Geschätzte und tatsächliche Ausführungspläne lesen
- Wichtige Operatoren, Kosten und Warnungen
- Wie der Optimierer Statistiken nutzt
- Cardinality Estimator und veraltete Statistiken als Falle
- Praxis-Übung: Einen Ausführungsplan analysieren und den Einfluss aktueller Statistiken zeigen.
- 4. JOIN-Typen und Parallelität
- Nested Loop, Merge Join und Hash Join
- Wann der Optimierer welchen JOIN wählt
- Parallelität in Abfragen und ihre Stellhebel
- Spills und Speicherprobleme erkennen
- Praxis-Übung: Eine Abfrage über die JOIN-Strategie und MAXDOP beeinflussen und vergleichen.
- Tag 2: 5. Statement-Tuning und Rewriting
- Abfragen umschreiben für bessere Pläne
- Suchbare Prädikate und das Vermeiden von Funktionen auf Spalten
- Mengenbasiert statt zeilenweise: Cursor refaktorieren
- Query- und Plan-Hints bewusst einsetzen
- Praxis-Übung: Eine ineffiziente Abfrage umschreiben und die Verbesserung messen.
- 6. Indizierungsstrategien und temporäre Objekte
- Indizierungsstrategien für OLTP und Analyse
- Temporäre Tabellen und Tabellenvariablen richtig nutzen
- Bulk Load und Synchronisation von Datenquellen
- Wartbare Indizierung über die Zeit
- Praxis-Übung: Eine Lade- und Abfragelast mit passender Indizierung beschleunigen.
- 7. Plan-Cache, Kompilierung und Parametrierung
- Plan-Cache und Object-Caches verstehen
- Auto-Parametrierung und erzwungene Parametrierung
- Kompilierung, Rekompilierung und Plan-Wiederverwendung
- Parameter-Sniffing als Performance-Falle
- Praxis-Übung: Parameter-Sniffing reproduzieren und die Auswirkung im Plan-Cache zeigen.
- 8. Query Store und Query Store Hints
- Query Store als zentrales Diagnose-Instrument
- Performance-Regressionen erkennen
- Query Store Hints ohne Code-Änderung setzen
- Custom Capture Mode für die gezielte Erfassung
- Praxis-Übung: Eine regressierte Abfrage im Query Store finden und mit einem Hint stabilisieren.
- Tag 3: 9. Transaktionen, Sperren und Deadlocks
- Transaktionen und ihre Isolationsstufen
- Lock-Typen, Modi, Granularität und Dauer
- Blocking analysieren und auflösen
- Deadlocks erkennen und vermeiden
- Row-Versionierung und Snapshot-Isolation
- Praxis-Übung: Ein Deadlock-Szenario nachstellen und gezielt beheben.
- 10. Optimized Locking und Nebenläufigkeit
- Optimized Locking und seine Wirkung auf Sperren (2025)
- Weniger Blocking und Deadlocks im Alltag
- Auswirkungen auf das Anwendungsdesign
- Accelerated Database Recovery und kurze Rollbacks
- Praxis-Übung: Eine Nebenläufigkeitslast mit und ohne Optimized Locking vergleichen.
- 11. Engine-Features: IQP, OPPO und moderne Datentypen
- Das kumulative IQP-Feature-Set: Memory Grant, DOP und CE Feedback
- Batch Mode on Rowstore
- OPPO als Nachfolger der Parameter Sensitive Plan Optimization (2025)
- Columnstore-Indizes für analytische Lasten, In-Memory OLTP als Hinweis
- Nativer JSON-Typ mit Indizes und native reguläre Ausdrücke und ihre Performance (2025)
- Praxis-Übung: IQP- und OPPO-Effekte vergleichen und eine JSON-Abfrage über den nativen Typ beschleunigen.
- 12. KI-gestütztes Tuning, Monitoring und Peer-Review
- Extended Events für die Abfrage-Diagnose
- Copilot in SSMS für das Umschreiben und Optimieren von Abfragen (2025)
- KI-Vorschläge kritisch prüfen und absichern
- Praxis-Übung (Peer-Review): Die Abfrage-Optimierung einer anderen teilnehmenden Person gegen Plan, Index und Messung prüfen und die Rückmeldungen einarbeiten.
LernzieleDas Seminar hat die Vermittlung von Kenntnissen der internen Optimierung zum Ziel.
Zielgruppen- Entwickelnde, die T-SQL-Abfragen und Datenzugriffe optimieren
- Datenbankentwickler mit Verantwortung für Performance
- Anwendungsentwickler, die SQL-lastige Komponenten verantworten
- Erfahrene Datenbankfachkräfte, die auf den 2025-Tuning-Stack umsteigen
Voraussetzungen: Die Teilnehmenden bringen gute Kenntnisse in SQL Server oder einem anderen relationalen System und sicheres T-SQL mit. Ein Grundverständnis von Ausführungsplänen ist hilfreich; Erfahrung mit datenintensiven Anwendungen erleichtert den Einstieg.