Es ist grundsätzlich immer die Datenbank, die bei Performanceproblemen schuld ist. Niemals kann es etwas anderes sein! Leider ist das nur all zu oft die Meinung von Entwicklern und Applikationsbetreuern. Natürlich kann es auch an der Datenbank und deren Konfiguration liegen, aber meistens liegt das Problem außerhalb der Datenbank.
In diesem technischen Frühstück schauen wir uns das Problem SQL Performance genauer an. Wir beginnen mit einem Blick auf die Infrastruktur. Welche Probleme können hier entstehen? Im nächsten Schritt zeigen wir die Möglichkeiten auf, wie man für die Performance-Optimierung benötigte Daten sammelt und diese interpretiert. Danach besprechen wir die typischen Ursachen, warum SQL Statements nicht performant sind und anschließend befassen wir uns mit dem Optimierungsmöglichkeiten von Statements und Strukturen. Last but not least stellen wir einige advanced Funktionalitäten vor, die ebenfalls zur Performancessteigerung genutzt werden können.
- Infrastruktur: Auslastung und Latenzen
- Architektur
- Also ist bei Performance Problemen immer die Datenbank schuld!
- Latenzen und Datenmengen
- Applikationsperformance Tuning Bereiche
- Performance Herausforderungen mit Beispielen
- Informationen sammeln in der Datenbank
- Datenbank Session
- Oracle Data Dictionary
- Oracle Performance Views
- Welche Berechtigungen braucht man um alle Informationen nutzen zu können?
- Wie identifiziert man eine Verarbeitung?
- Aktuelle Verarbeitungen
- Ausführungspläne
- TOP SQL Statements
- Session Traces
- DBMS_APPLICATION_INFO
- Typische Probleme bei SQL Statements
- Falsche Indizes
- SELECT * und unangebrachte Index-Scans
- Falsche Datentypen / implizite Datentypkonvertierung
- Schlechtes (SQL) Design
- Funktionen auf Spalten
- Sinnlose / schlechte WHERE Bedingungen
- WHERE Bedingungen mancher Abfragetools
- Views auf Views auf Views
- SQL Performance Tuning
- Basis ist immer der Ausführungsplan sowie das Wissen über die Strukturen und Datenmengen
- Komplexere Statements aufteilen und die einzelnen Teile analysieren
- Anlegen von passenden Indizes
- DBA_INDEX_USAGE - Speedup your DML
- BULK Operationen und sinnvolle Transaktionsgrößen
- Weiterführende Möglichkeiten
- Select Offloading
- Partitioning
- Database In-Memory
- MViews