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-
Search WWH ::




Custom Search