SChWERPUNKT - Midrange Magazin
SChWERPUNKT - Midrange Magazin
SChWERPUNKT - Midrange Magazin
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
SQL-Analyse mit Visual Explain V6R1, Teil 1<br />
SQL-Abfragen<br />
Möglicherweise haben Sie sich bisher beim Einsatz von SQL-Abfragen eher dafür interessiert,<br />
wie Ihr Select-Statement aufgebaut sein muss, damit Sie die benötigten Daten erhalten.<br />
Sie haben die Abfrage geschrieben, ausgeführt und sich anschließend unter Umständen<br />
gefragt, warum eine so einfache Anfrage „soooo“ lange braucht. Mit dem guten alten „read“<br />
wäre das alles viel schneller gegangen, mag so mancher sattelfester und gestandener<br />
RPG-Spezialist dann sagen.<br />
Ganz so einfach ist dieser Vergleich<br />
jedoch nicht: In Ihrem RPG-Programm<br />
müssen Sie die Logik kodieren,<br />
d. h. Sie bestimmen im RPG-Programm<br />
nicht nur, welche Daten benötigt werden,<br />
sondern codieren auch den Algorithmus,<br />
der diese Daten zur Verfügung<br />
stellt. Und hier ist der entscheidende<br />
Unterschied: Wenn Sie eine SQL-Abfrage<br />
erstellen, definieren Sie das Abfrageergebnis,<br />
nicht aber den Weg der<br />
Ausführung. Über den geeigneten Ausführungsplan<br />
entscheidet das System.<br />
Genauer gesagt, der Teil des Systems,<br />
der Query Engine beziehungsweise Optimizer<br />
genannt wird. Der Optimizer<br />
schätzt unterschiedliche Ausführungskosten<br />
für unterschiedliche Zugriffswege<br />
und wird sich letztendlich für<br />
den Zugriffsweg mit dem geringsten<br />
Kostenfaktor entscheiden. Mit Kosten<br />
ist hier gemeint, dass sowohl der Aufwand<br />
im Eingabe-/Ausgabe-Bereich<br />
(I/O-Kosten) als auch der Kostenfaktor<br />
im Arbeitsspeicher (CPU-Kosten) für<br />
die Verarbeitung der Daten berücksichtigt<br />
wird. Aufgabe des Optimizers ist<br />
es nun, bei der Gestaltung des Zugriffs<br />
zwischen eben diesen Kosten abzuwägen<br />
und den kostengünstigsten Ausführungsplan<br />
einzusetzen. Visual Explain<br />
ist das strategische IBM Interface, um<br />
die gewählten Ausführungspläne zu<br />
visualisieren. Beide SQL-Engines werden<br />
hierbei unterstützt – CQE und SQE.<br />
Hierfür werden alle notwendigen Ver-<br />
arbeitungsschritte sowie die verwendeten<br />
temporären und permanenten Objekte<br />
graphisch aufbereitet dargestellt.<br />
Verschiedene Icons repräsentieren<br />
einzelne Verarbeitungsschritte und die<br />
verwendeten Objekte. Zu jedem verwendeten<br />
Objekt stehen weiterführende<br />
Informationen zur Verfügung. Wenn<br />
Sie Visual Explain aus der Prozedurumgebung<br />
von System i Navigator aus aufrufen,<br />
platzieren Sie den Cursor auf ein<br />
SQL-Statement, dessen Ausführungsplan<br />
angezeigt werden soll. Klicken Sie<br />
anschließend auf eines der verfügbaren<br />
Icons oder wählen Sie den entsprechenden<br />
Menüpunkt (Bild 1).<br />
Erklären [STRg + E] erlaubt die<br />
Erstellung eines grafischen Ausführungsplanes<br />
ohne Ausführung der<br />
SQL-Abfrage. Intern wird dem Attribut<br />
„QUERY_TIME_LIMIT“ der Optionsdatei<br />
QAQQINI der Wert Null zugewiesen,<br />
um die Ausführung der Abfrage zu verhindern.<br />
Ausführungspläne der SQL-<br />
1<br />
VISUAL EXPLAIN AUFRUFEN<br />
Abfragen, die viele Stunden laufen,<br />
können in wenigen Sekunden angezeigt<br />
werden. Die angezeigten Informationen<br />
über die Laufzeitumgebung könnten<br />
in diesem Fall aber von tatsächlichen<br />
Umgebungseinstellungen abweichen.<br />
Zudem könnte es passieren, dass die<br />
Ausführungspläne komplexer Abfragen<br />
nicht dargestellt werden. Probieren Sie<br />
es einfach aus!<br />
Ausführen und Erklären [STRg + u]<br />
überträgt die Abfrage ebenfalls an den<br />
Optimizer für den Optimierungsprozess.<br />
Anschließend wird das Statement<br />
aber ausgeführt und erst nach der Ausführung<br />
erfolgt die Darstellung des<br />
Ausführungsplanes. Visual Explain<br />
könnte ein Ergebnis liefern, das nicht<br />
die aktuelle Laufzeitumgebung widerspiegelt,<br />
wenn das SQL-Statement in<br />
Umgebungen ausgeführt wird, die sich<br />
schnell und häufig ändern.<br />
Während der Ausführung erklären<br />
[STRg + W] wurde aus diesem Grund<br />
10/2010 · MIDRANGE MAgAZIN<br />
37