Datenbank-Performance für Entwickler (DEU)

Warum sollten Sie an diesem Workshop teilnehmen?

Als Entwickler erhofft man sich, dass eine relationale Datenbank das Versprechen von SQL hält, im Grunde wie eine Black Box zu funktionieren - ich muss mich nicht um die Details kümmern und mir auch keine Gedanken machen, wie ich auf die Daten im Detail zugreife, sondern formuliere meine Anfragen basierend auf einem relationalen Datenmodell, um alles andere kümmert sich die Datenbank.
Auch wenn das zu weiten Teilen zutrifft, sieht die Realität im Hinblick auf Performance doch häufig anders aus - mit steigender Komplexität und Datenmenge brauchen manche Verarbeitungsschritte in der Datenbank länger als gedacht und können die Akzeptanz und Zufriedenheit von Endanwendern maßgeblich beeinflussen.
Von daher macht es Sinn, sich mit der Datenbank detaillierter auseinanderzusetzen, um zu verstehen, auf was es im Bereich Performance ankommt.
Dieser Workshop fängt bei den grundlegenden Ideen von (Datenbank-) Performance und der Instrumentierung aus Applikationssicht an, wie sich Performance in der Datenbank überhaupt sichtbar und überprüfbar macht.
Wir schauen uns den Optimizer an, der aus SQL ausführbaren Code generiert und sehen anhand von Fallbeispielen, die an realen Fällen aus der Praxis angelehnt sind, wie der Optimizer funktioniert bzw. nicht funktioniert, wie man Ausführungspläne richtig liest und worauf es bei der Erstellung von Statistiken ankommt, um den Optimizer optimal in seinen Entscheidungen zu unterstützen.
Wir beschäftigen uns mit "guten" und "bösen" Hints und wie diese bei der Erstellung von komplexen SQLs hilfreich sein können.
Wir schauen uns an, was man bei der Verwendung von Bind-Variablen bzw. statischem SQL in PL/SQL beachten sollte und wie die optimale Mischung aus Literalen und Bind-Variablen aussehen kann.
Und natürlich ist eine gute Indizierung und was es dabei zu beachten auch eines der Hauptthemen. In diesem Zusammenhang schauen wir uns auch an, was Clustering bedeutet, welche Möglichkeiten neuere Oracle-Versionen hier bieten (Attribute Clustering / Zonemaps) sowie die unterschiedlichen Speicherformen (Heap, Index Organized, Cluster) - ein maßgeblich unterschätztes Thema, was Datenbank Performance angeht.
Häufig sind Performance Probleme von Applikationen in der Datenbank durch einige grundlegende Fehlannahmen verursacht, wie die Datenbank das ihr vorgesetzte SQL ausführt. Dieser Workshop vermittelt einige Einsichten, wie die Datenbank SQL in ausführbaren Code umsetzt und was typischerweise dabei schief gehen kann, warum es schief geht, was dann zu einigen wichtigen Punkten führt, wie diese Probleme vermieden werden können und wie man das physische Design von vornherein für Performance optimieren kann.
Ziele des Workshops
  • Grundlegendes Verständnis, was Performance bedeutet und wie sie gemessen werden kann

  • Anforderungen an Applikationen (Instrumentierung)

  • Die verschiedenen Werkzeuge, die die Datenbank im Performance Bereich zur Verfügung stellt, verstehen und richtig einsetzen (Trace / Row Source Statistics / Active Session History / Real Time SQL Monitoring)

  • Verstehen Sie die grundlegenden Prinzipien wie der Oracle Optimizer die Kosten für Abfragen berechnet, sowie die Hauptfaktoren, die diese Berechnung beeinflussen (Grundlagen Optimizer, Histogramme, Statistiken (inkl. New Features 12c/18c/19c))

  • Bekommen Sie eine Idee warum einige dieser Berechnungen schief gehen können, auch in Fällen, die für Menschen relativ trivial aussehen

  • Lernen Sie, wie Sie einige diese Berechnungen verbessern können, und was Sie in den Fällen tun können, wenn die Berechnung nicht so einfach verbessert werden kann

  • Lernen Sie, wie man die vom Optimizer generierten Ausführungspläne richtig liest ((serielle) Ausführungspläne richtig lesen)

  • Was macht eine gute Indizierung aus?

  • Was bedeutet Clustering, welchen Einfluss auf Performance kann dies haben und wie kann ich das als Entwickler einsetzen und beeinflussen? (Clustering / Speicherformen inkl. New Features 12c: Attribute Clustering / Zonemaps, Heap, Index Organized Tables, Cluster)

  • Bind Variablen und Literale: Grundsätzliche Ideen, Vor- und Nachteile, auf was kommt es an? (Bind Variablen / Literale und ungleichmäßige Datenverteilung)

  • Wann macht der Einsatz von Hints Sinn, welche Arten von Hints gibt es und wie verwende ich Sie richtig? (Hints)
Voraussetzungen

Grundlegendes Verständnis der Oracle Architektur, SQL

Zielpublikum

DBAs und Entwickler

Kursinhalte

- Instrumentierung
- Trace / Row Source Statistics / Active Session History / Real Time SQL Monitoring
- Grundlagen Optimizer, Histogramme, Statistiken (inkl. New Features 12c)
- (serielle) Ausführungspläne richtig lesen
- Indizierung
- Clustering / Speicherformen inkl. New Features 12c: Attribute Clustering / Zonemaps, Heap, Index Organized Tables, Cluster
- Hints
- Bind Variablen / Literale und ungleichmäßige Datenverteilung

No comments:

Post a Comment