Show TOC Anfang des Inhaltsbereichs

 Beispielanalyse einer Informix-Anweisung  Dokument im Navigationsbaum lokalisieren

Sie können die SQL-Trace-Funktion dazu nutzen, Erklärungen zu bestimmten Informix-Anweisungen anzuzeigen. Aus der Anzeige einer Trace-Datei heraus können Sie die Funktion Explain SQL nutzen, um mehr Informationen zu einer bestimmten Datenbankanweisung anzuzeigen. Die Explain-Funktion steht nur für PREPARE- und REOPEN-Operationen zur Verfügung. So analysieren Sie eine Anweisung:

...

       1.      Stellen Sie den Cursor auf die Zeile, die die zu analysierende Datenbankanweisung enthält.

       2.      Wählen Sie Explain.

Das Explain-Bild zeigt die Datenbankstrategie für die gewählte Operation.

Wenn Sie mit einer INFORMIX-Datenbank arbeiten, können Sie z.B. die Analyse für die folgende Anweisung anzeigen:

select owner from systables where tabname = ‘atab’

Das System zeigt folgendes an:

Execution plan of a select statement (Online Optimizer)

QUERY:

SELECT OWNER

FROM SYSTABLES

WHERE TABNAME = ‘  ATAB’  

Estimated Cost: 1

Estimated # of Rows Returned: 1

1) informix.systables: INDEX PATH

(1)  Index Keys: tabname owner  (Key-Only)

      Lower Index Filter: informix.systables.tabname = ‘  ATAB’

Die Felder in der Anzeige haben folgende Bedeutung:

QUERY

Identifiziert die SQL-Anweisung, die analysiert wurde.

Estimated Cost

Schätzt die Datenbankzeit, die zur Ausführung der Anweisung benötigt wurde. Der kostenbasierende Optimizer schätzt diesen Wert anhand der I/O- und CPU-Zeiten, die zur Ausführung der Anweisung benötigt wurden. Je größer Estimated Cost, desto teurer die Anweisung.

Estimated # of Rows Returned:

Schätzt die Anzahl der Tabellenzeilen, die die SQL-Anweisung zurückliefern wird.

Unmittelbar unter der Anzahl zurück gelieferter Zeilen folgt der gewählte Ausführungsplan. Im obigen Beispiel sieht dieser Plan so aus:

1) informix.systables: INDEX PATH

Die 1) gibt an, dass das System die Tabelle systables als ersten Schritt des Plans ausführt. Bei Analysen, die mehrere Tabellen umfassen (Views und Joins), gibt die Nummernfolge die Reihenfolge an, in der das System die Tabellen verarbeitet. Im vorliegenden Beispiel ist nur ein einziger Schritt erforderlich.

Der Ausführungsplan gibt die Art des Tabellenzugriffs an. Im obigen Beispiel erfolgte der Zugriff über INDEX PATH. Auf die erforderlichen Daten wird nun über den Index der Tabelle systables zugegriffen. Normalerweise verwendet der Ausführungsplan den Primärschlüssel als Index. Jede transparente Tabelle im ABAP-Dictionary hat einen Primärschlüssel, für den das System automatisch einen Index erstellt.

Hinweis

Wenn das System einen großen Teil einer Tabelle lesen muss, verwendet es nicht den Primärschlüssel als Index.

In diesem Beispiel musste das System die Zeile, die dem Indexschlüssel entspricht, nicht lesen. Die benötigte Information war bereits in Schlüssel selbst vorhanden. In der Analyse wird dies durch Key-Only deutlich:

(1)  Index Keys: tabname owner  (Key-Only)

Falls eine SELECT-Anweisung ohne vollqualifizierten Schlüssel angegeben wird, kann es sein, dass die Datenbank die relevanten Zeilen mit einem FULL TABLE SCAN lesen muss. In diesem Fall enthält die SQL-Explain-Ausgabe keinen Index, sondern eine Anzeige ähnlich der folgenden:

1) informix.systables: SEQUENTIAL  SCAN

Dies gibt an, dass die gesamte Tabelle gelesen werden muss (FULL TABLE SCAN).

Bei komplexeren Operationen, die die Kombination der Ergebnisse mehrerer SELECT-Anweisungen auf unterschiedliche Tabellen erfordern, werden weitere Strategien angezeigt (z.B. MERGE JOIN, DYNAMIC HASH JOIN). Diese Anzeigen beziehen sich auf die vom Optimizer gewählten Join-Strategien.

Aktualität sicherstellen

Der Optimizer kann nur dann exakte Werte für jedes Analysefeld liefern, wenn die statistischen Informationen zu jeder Tabelle aktuell sind. Um exakte Analysewerte zu erhalten, müssen Sie daher sicherstellen, dass die aktuellsten statistischen Informationen zum Inhalt jeder angesprochenen Tabelle verfügbar sind. 

Um diese Informationen zu aktualisieren, verwenden Sie die Funktion Update Statistics. Da der vom Optimizer gewählte Ausführungsplan stark von diesen Informationen abhängt (z.B. die Verwendung des FULL TABLE SCAN anstelle eines Index), sollten Sie die Aktualität durch regelmäßiges Ausführen der Funktion Update Statistics sicherstellen.

 

Ende des Inhaltsbereichs