Database Reference
In-Depth Information
P.: „
Manchmal hilft es, den Shared Pool mit dem Kommando ‚alter system flush shared_
pool
'
durchzuspülen oder die Datenbankinstanz zu rebooten
.“
L.: „
Ich merke, Du versuchst, das SQL-Tuning zu meiden
.“
P.: „
Ehrlich gesagt, genau das tue ich auch. Meiner Meinung nach gehört SQL-Tuning
nicht zur Datenbankadminstration
.“
L.: „
Ich gebe Dir Recht, dass SQL-Tuning generell zu der Aufgabe der Entwickler gehört. Wenn
aber ein Performanz-Problem wegen inperformanter SQL-Anweisungen sehr akut ist und Dir
keine Entwickler zur Verfügung stehen, musst Du als Datenbankadministrator eingreifen. Ich
hoffe sehr, dass
die Ansätze des formalen SQL-Tunings aus diesem Abschnitt Dir helfen können
.“
P.: „
Meinst Du, ich bin imstande, das SQL-Tuning durchzuführen, ohne die jeweilige An-
wendung und insbesondere das jeweilige Datenmodell zu kennen?
“
L.: „
Wenn ich das kann, warum kannst Du das dann nicht?
“
P.: „
Na ja, Du bist doch etwas erfahrener als ich
.“
L.: „
Peter, so schwierig ist es gar nicht. Ich zeige in diesem Abschnitt, wie ich das mache.
Das formale SQL-Tuning basiert auf den Laufzeitstatistiken im Ausführungsplan und ver-
bessert oder beseitigt dort die kritischen Schritte. Ein paar Beispiele werden Dich hoffentlich
überzeugen, dass es auch für Dich machbar ist
.“
18.4.1
Zielsetzung für SQL-Tuning bei akuten Performanz-Problemen
Der zeitliche Faktor ist bei den akuten Performanz-Problemen entscheidend. Ich kann nur
wiederholen,dassmanausdiesemGrundzunächstversuchenmuss,einengutenAusfüh-
rungsplanfürdieproblematischeSQL-AnweisungzufindenunddiesenPlanzufixieren.
Nur wenn es nicht geht, kann man mit dem SQL-Tuning anfangen.
WenneseineAnwendungist,beiderkeineProgrammcodeänderungenmöglichsind,
muss man bereits bei dem SQL-Tuning daran denken, wie man den optimierten Ausfüh-
rungsplan umsetzt. Hält man sich an die folgenden einfachen Regeln, kann man problem-
los den getunten Ausführungsplan ohne Programmcodeänderungen umsetzen:
• versuche das SQL-Tuning ohne Umschreiben der jeweiligen SQL-Anweisung (also
ohne Strukturänderung) durchzuführen,
• benutzedafürParametereinstellungenoder
• Optimizer-Hints.
Den so optimierten Ausführungsplan kann man dann mit Hidden Hints ohne Programm-
codeänderungfixieren.
Peter: „
Man könnte eventuell auch versuchen, die Optimizer-Statistiken für die Tabellen
aus der SQL-Anweisung neu zu erstellen, wenn sie veraltet sind
.“
Leonid: „
Gut, dass Du das erwähnt hast. Die jeweilige Problem-Lösung darf keine neu-
en Probleme verursachen. Deswegen suche ich immer nach einer Lösung, die keine anderen
SQL-Anweisungen beeinflusst. Da die neuen Optimizer-Statistiken theoretisch das tun könn-