Skip to main content

2014 | Buch

Performance Tuning für Oracle-Datenbanken

Methoden aus der Praxis für die Praxis

insite
SUCHEN

Über dieses Buch

Stellen Sie sich vor, Ihre Datenbank lahmt plötzlich oder steht gar. Es kann auch sein, dass einige Anwendungsteile zu langsam sind, und Sie wissen nicht, warum. Wie klärt man die Ursache schlechter Performance und wie beseitigt man sie am effektivsten? Welche Möglichkeiten bietet Oracle? Welche anderen nicht oder nur spärlich beschriebenen Methoden und Tricks kann man anwenden, damit Ihre Datenbank wieder richtig „tickt“? Aus diesem Blickwinkel betrachtet der Autor diverse Oracle-Features. Sie sind auch mit Test-Cases versehen, so dass der Leser selbst deren „Tiefen“ untersuchen kann. Da „machs-wie-ich“ eine der besten Lehrmethoden ist, sind zahlreiche Fälle im Buch präsentiert, die direkt für die Praxis umsetzbar sind. Die begleitende Webseite bietet Test-Cases für einige Features sowie SQL- und PLSQL-Skripte für Performance Tuning.

Inhaltsverzeichnis

Frontmatter
1. Einführung
Zusammenfassung
Dieses Buch ist in erster Linie an die Datenbankadministratoren adressiert. Da die Datenbankadministratoren sehr häufig mit plötzlichen Performanz-Verschlechterungen zu tun haben, stehen solche Probleme im Fokus dieses Buches. Das Hauptziel ist, einige Ansätze und Methoden zu präsentieren, mit welchen akute Performanz-Probleme schnell zu analysieren und zu beseitigen sind. Meistens werden solche Probleme durch inperformante SQL-Anweisungen verursacht. Dies erklärt, warum ich mich hauptsächlich auf die inperformanten SQL-Anweisungen, deren Analyse und Tuning in diesem Buch konzentriere. In den Fällen aus der Praxis sind aber auch einige andere Probleme und ihre Lösungen beschrieben.
Leonid Nossov
2. Einleitung
Zusammenfassung
Bevor wir mit den Methoden des Performance Tuning anfangen, ist es sinnvoll zu klären, was Performance Tuning ist. Es gibt eine Menge Definitionen. Die folgende Definition stellt keine Ansprüche, die einzig richtige zu sein. Unter Performance Tuning versteht man organisatorische und technische Masnahmen, die die Datenbank optimieren, um so ein Funktionieren zu erreichen, das in jeder Hinsicht akzeptabel ist.
Leonid Nossov
3. Die 2 wichtigsten Kennzahlen für das Performance Tuning
Zusammenfassung
Bis jetzt haben wir nicht konkretisiert, was eine schlechte Performanz bedeutet. Wenn jemand sich über eine schlechte Datenbank-Performanz beklagt, meint er, dass die Antwortzeit eines Datenbankkommandos (normalerweise einer SQL-Anweisung) oder die Laufzeit eines Datenbankprozesses zu groß ist. Es kann sein, dass mehrere Kommandos oder mehrere Prozesse, möglicherweise das gesamte System, solche Probleme haben. In jedem Fall geht es hier um eine inakzeptable Laufzeit, „elapsed time“ in der Computerfachsprache. Diese Laufzeit unterteilt sich in die CPU-Auslastung und in die Wartezeit: „elapsed time“ = „cpu time“ + „wait time“.
Leonid Nossov
4. Laufzeitstatistiken
Zusammenfassung
Die CPU-Statistiken sind im Abschn. 3.1 dargestellt. Wegen der Wichtigkeit dieser Statistiken für Performance Tuning habe ich sie separat von den anderen beschrieben. In diesem Kapitel sind einige andere Laufzeitstatistiken präsentiert. Aus dem Abschn. 3.1 wissen wir bereits, dass die Laufzeitstatistiken bei Oracle in folgende 2 Arten unterteilt werden: die Betriebssystem- und die Datenbankstatistiken. Diese beiden Arten der Laufzeitstatistiken können entweder gegenwärtig oder historisch sein.
Leonid Nossov
5. Wichtige Charakteristiken des SQL-Textes
Zusammenfassung
Bestimmt hatten viele von Ihnen öfters mit Hash Value und mit SQL Id zu tun. Sind Sie aber mit den beiden Begriffen tatsächlich gut vertraut? Wissen Sie zum Beispiel, wie die beiden berechnet werden? Warum enthält SQL Id Buchstaben? Warum kommen einige Buchstaben in keiner SQL Id vor (beispielsweise die Buchstaben „I“ oder „E“)? Gibt es überhaupt einen Zusammenhang zwischen dem Hash Value und der SQL Id?
Leonid Nossov
6. Explain -/Ausführungsplan
Zusammenfassung
Der Hashwert für Explain- und Ausführungspläne wurde in Oracle 9i eingeführt. Die jeweilige Spalte PLAN_HASH_VALUE haben beispielsweise die Views V$SQL, DBA_HIST_SQLSTAT und die Tabelle STATS$SQL_PLAN_USAGE. Die Spalte OTHER_XML enthält auch den jeweiligen Hashwert. Anhand dieses Hashwertes ist es sehr einfach zu prüfen, ob 2 Ausführungspläne unterschiedlich sind. Wenn die Hashwerte unterschiedlich sind, sind die jeweiligen Ausführungspläne sicherlich auch unterschiedlich. Wenn sie aber gleich sind, können wir immer davon ausgehen, dass die Ausführungspläne identisch sind?
Leonid Nossov
7. Optimizer-Statistiken
Zusammenfassung
In diesem Kapitel sind einige Features von Oracle 11 beschrieben, die für Performance Tuning wichtig sind und einige für die Praxis nützliche Informationen bezüglich der Optimizer-Statistiken enthalten. Hoffentlich finden Sie darunter ein paar neue Fakten, die Ihnen beim Tuning helfen.
Leonid Nossov
8. Gemeinsame Nutzung der Cursor bei Oracle (cursor sharing)
Zusammenfassung
Da das harte Parsing ziemlich kostspielig ist, versucht Oracle es möglichst zu vermeiden. Dafür wird gemeinsame Nutzung der Cursor (cursor sharing) eingesetzt: Wird ein neuer Cursor geöffnet, schaut Oracle zunächst, ob ein bestehender Cursor für die jeweilige SQL-Anweisung benutzt werden kann. Ist das der Fall, wird der bestehende Cursor genommen, und seine Cursor-Statistik für die Anzahl der Parse Calls (in der Spalte PARSE_CALLS der View V$SQL) wird um 1 erhöht. Wenn Oracle keinen passenden Cursor findet, wird das harte Parsing gemacht und ein neuer Cursor angelegt. Der Grund, aus welchem keine gemeinsame Nutzung der bestehenden Cursor möglich ist, wird dabei normalerweise in der View V$SQL_SHARED_CURSOR protokolliert.
Leonid Nossov
9. Dynamic Sampling
Zusammenfassung
Wenn keine Optimizer-Statistiken für eine Tabelle vorhanden sind, ist es sinnvoll, diese Statistiken dynamisch zu erstellen (also bei Parsing bzw. bei Ausführung der jeweiligen SQL-Anweisung). Das war einer der Gründe für die Einführung von Dynamic Sampling in Oracle 9.2.
Leonid Nossov
10. User Bind Peeking
Zusammenfassung
In diesem kleinen Abschnitt besprechen wir kurz das Feature User Bind Peeking von Oracle 9i und 10g. Ich glaube, es ist sinnvoll aus den folgenden 2 Gründen:
  • ein klares Bild über dieses Feature hilft die Vorteile von Adaptive Cursor Sharing besser zu verstehen (s. im Abschn. 15.1), welches eine Weiterentwicklung von User Bind Peeking in 11g darstellt.
Leonid Nossov
11. Parameter CURSOR_SHARING
Zusammenfassung
Literale in den SQL-Anweisungen sind die häufigste Ursache des harten Parsings und der damit verbundenen Performanz-Probleme. Aus diesem Grund muss man möglichst die Bind-Variablen statt Literale beim Programmieren der SQL-Anweisungen benutzen. Wenn eine Anwendung bereits mit Literalen programmiert ist und man einige Parsing-Probleme hat, ist es normalerweise nicht mehr möglich, Literale durch jeweilige Bind-Variablen mit einer Programmänderung zu ersetzen, weil das zu teuer wird. In diesem Fall hilft der Parameter cursor_sharing, der in Oracle 8i eingeführt wurde.
Leonid Nossov
12. AWR und Statspack
Zusammenfassung
Das AWR- und das Statspack-Repository enthalten viele nützliche Performanzstatistiken. Für die Auswertung dieser Daten kann man Standard-Reporte von Oracle benutzen, in denen die jeweiligen Performanzstatistiken textuell dargestellt sind. Mit den grafischen Auswertungen der AWR- oder der Statspack-Daten kann man aber die Performanzanalyse in vielen Fällen wesentlich schneller und effektiver durchführen. Einige wichtige Vorteile der Grafiken für Performance Tuning werden in diesem Kapitel diskutiert. Wir besprechen hier auch die Vorbestimmung eines Statspack- bzw. eines AWR-Reports und seine Grenzen bei der Performanzanalyse.
Leonid Nossov
13. Optimizer Hints
Zusammenfassung
Benutzung der Optimizer Hints direkt beim Programmieren ist sicherlich kein guter Programmierstil. Man kann aber die Optimizer Hints sehr erfolgreich bei akuten Performanz-Problemen verwenden, die durch inperformante SQL-Anweisungen verursacht sind. In solchen Fällen werden normalerweise Hidden Hints eingesetzt (s. im Abschn. 18.7), weil man die problematischen SQL-Anweisungen meistens nicht ändern kann.
Leonid Nossov
14. Stored Outlines, SQL Profiles. Bedeutung, SQL Plan Baselines. Unterschiede, Zusammenhänge
Zusammenfassung
Alle 3 Features aus dem obigen Titel gehören zu den mächtigen Methoden des Performance Tuning. 2 davon (Stored Outlines und SQL Plan Baselines) dienen dem Zweck der Plan-Stabilisierung, wobei das Dritte (SQL Profiles) zum automatischen SQL-Tuning gehört.
Leonid Nossov
15. Einige für Performance Tuning wichtige Features in 11g
Zusammenfassung
Wir haben bereits ein paar Features von Oracle 11g besprochen (beispielsweise SQL Monitoring im Abschn. 6.2 oder erweiterte Optimizer Statistics im Abschn. 7.1). In diesem Kapitel besprechen wir weitere Features von Oracle 11g:
  • Adaptive Cursor Sharing,
  • Cardinality Feedback,
  • Serial Direct Path Reads,
  • Automatic DOP.
Leonid Nossov
16. Ein bisschen Philosophie
Zusammenfassung
Was ist nach Ihrer Meinung wichtiger bei Performance Tuning, die allgemeinen Ansätze oder die konkreten Methoden? Meine Frage klingt bereits philosophisch. In diesem Kapitel möchte ich ein bisschen um das Performance Tuning herum philosophieren. Nicht alles, was Sie dort finden, ist unumstritten. Wenn Sie meine Überlegungen und meine Prinzipien nicht akzeptieren, können Sie dieses Kapitel als einen Anstoß für die Erarbeitung ihrer eigenen gebrauchen. Ich bin übrigens fest überzeugt, dass die allgemeinen Ansätze viel wichtiger sind. Wenn man die richtige Methodologie einsetzt, kommt man auch an die effektiven konkreten Methoden.
Leonid Nossov
17. Einige Ermittlungstechniken für problematische SQL-Anweisungen
Zusammenfassung
Jede Lösung der Performanz-Probleme besteht aus den folgenden 3 Schritten:
  • Ermittlung der Ursache,
  • Erarbeitung der Methode für die Beseitigung dieser Ursache,
  • Umsetzung der gefundenen Methode.
Leonid Nossov
18. Tuning der problematischen SQL-Anweisungen
Zusammenfassung
In diesem Kapitel sind einige praktische Ansatze des SQL-Tunings beschrieben, welche den Tuning-Prozess beschleunigen. Findet man einen akzeptablen Ausfuhrungsplan im Zuge des SQL-Tunings, ist es lediglich die Halfte der Problemlosung, weil man den verbesserten Ausfuhrungsplan noch umsetzen muss. Das kann auch problematisch sein, wenn keine Programmcodeanderungen moglich sind. In diesem Fall konnen versteckte (hidden) Hints behilflich sein, wenn die SQL-Anweisung mit Parametereinstellungen oder mit Hints getunt ist. Wenn man die SQL-Anweisung beim SQL-Tuning umschreibt, kann moglicherweise die Methode mit Hidden SQLs bei der Umsetzung dieser Losung ohne Programmcodeanderung helfen. Diese Methode ist zum Schlus dieses Kapitels beschrieben.
Das SQL-Tuning ohne Zugang zu der Datenbank (Remote-SQL-Tuning) bereitet einige zusatzliche Schwierigkeiten. Da man mit den Experimenten beim Remote-Tuning sehr eingegrenzt ist, muss man die Tuning-Strategie wesentlich besser und ausfuhrlicher uberlegen. Hier sind einige Ansatze fur diese Tuning-Art ausgeleuchtet.
Leonid Nossov
19. Neue Features von Oracle 12c im Überblick
Zusammenfassung
Oracle 12c erschien, nachdem ich das Buch beendet habe. Diese neue Version von Oracle bietet mehrere interessante Features für Performance Tuning an. Aus diesem Grund entschied ich mich, einige dieser Features im Nachgang kurz zu resümieren.
Leonid Nossov
20. Nachwort
Zusammenfassung
Nie im Leben bin ich Marathon gelaufen, habe aber ein Gefühl, eben einen Marathonlauf zu beenden. Das war ein langer Weg, den wir gemeinsam gemeistert haben. Ich hoffe sehr, dass Sie dabei einige neue Ansätze und Methoden kennengelernt haben, welche Ihnen bei Performance Tuning helfen werden.
Leonid Nossov
21. SQL-Skripte
Zusammenfassung
Die Skripte aus diesem Kapitel kann man von der Internet-Seite http://www.tutool.de/book herunterladen.
Leonid Nossov
Backmatter
Metadaten
Titel
Performance Tuning für Oracle-Datenbanken
verfasst von
Leonid Nossov
Copyright-Jahr
2014
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-642-33053-7
Print ISBN
978-3-642-33052-0
DOI
https://doi.org/10.1007/978-3-642-33053-7

Premium Partner