Net.Data Verwaltung und Programmierung für OS/400
Informationen zu Überlegungen hinsichtlich der DB2-Leistung finden Sie
im Handbuch DB2 for AS/400 SQL Programming Guide. Diese
Veröffentlichung enthält eine Fülle von Informationen, etwa zur effektiven
Verwendung von SQL-Indizes, zur Optimierung der Leistung von
Verknüpfungsabfragen und zur Optimierung der Leistung bei der Auswahl von
Daten aus mehr als zwei Tabellen. In den folgenden Abschnitten werden
wichtige Aspekte der Verfahren für Datenbanken und die SQL-Sprachumgebung
hervorgehoben:
Die folgende Zusammenfassung nennt einige der einfachsten
Datenbankverfahren, mit denen der Zugriff auf die Datenbank verbessert werden
kann:
- Vermeiden Sie numerische Umwandlungen. Wenn ein Spaltenwert und ein
Literalwert verglichen werden, versuchen Sie, die gleichen Datentypen und
Attribute anzugeben. DB2 für AS/400 verwendet keinen Index für die
benannte Spalte, wenn der Literalwert eine höhere Genauigkeit hat als die
Spalte. Wenn die beiden zu vergleichenden Elemente unterschiedliche
Datentypen aufweisen, muß DB2 für AS/400 einen der beiden Werte umwandeln, was
zu Ungenauigkeiten führen kann (aufgrund der beschränkten
Rechengenauigkeit).
EDUCLVL ist beispielsweise ein Halbwortganzzahlenwert (SMALLINT).
Geben Sie folgendes an:
... WHERE EDUCLVL < 11 AND EDUCLVL >= 2
Und nicht:
... WHERE EDUCLVL < 1.1E1 AND EDUCLVL > 1.3
- Vermeiden Sie das Auffüllen von Zeichenfolgen. Versuchen Sie, die
gleiche Datenlänge zu verwenden, wenn Sie einen Zeichenfolgenspaltenwert mit
fester Länge mit einem Literalwert vergleichen. DB2 für AS/400
verwendet keinen Index, wenn der Literalwert länger ist als die
Spaltenlänge.
EMPNO beispielsweise ist CHAR(6) und DEPTNO CHAR(3). Geben Sie
folgendes an:
... WHERE EMPNO > '000300' AND DEPTNO < 'E20'
Und nicht:
... WHERE EMPNO > '000300 ' AND DEPTNO < 'E20 '
- Vermeiden Sie die Verwendung von LIKE-Mustern, die mit % oder _
anfangen. Das Prozentzeichen (%) und das Unterstreichungszeichen (_)
geben bei Verwendung im Muster eines LIKE-Vergleichselements eine Zeichenfolge
an, die ähnlich ist wie der Spaltenwert von Zeilen, die Sie auswählen
möchten. Bei Verwendung zur Angabe von Zeichen in der Mitte oder am
Ende einer Zeichenfolge können LIKE-Muster Indizes nutzen.
Beispiel:
... WHERE LASTNAME LIKE 'J%SON%'
Bei Verwendung am Anfang einer Zeichenfolge können LIKE-Muster DB2 für
AS/400 jedoch daran hindern, Indizes zu verwwenden, die in der Spalte LASTNAME
definiert sein könnten, um die Anzahl der gelesenen Zeilen zu
beschränken. Beispiel:
... WHERE LASTNAME LIKE '%SON'
Vermeiden Sie die Verwendung dieser Symbole am Anfang von Zeichenfolgen,
vor allem, wenn Sie auf eine besonders große Tabelle zugreifen.
Verwenden Sie die folgenden Verfahren für die SQL-Sprachumgebung, um
die Leistung zu optimieren.
- Verringern Sie die Anzahl der Benutzer-IDs, die eine Verbindung zur
Datenbank herstellen, um das Wiederherstellen der Verbindung zu der Datenbank
zu vermeiden. Die SQL-Sprachumgebung ordnet jeder fernen Verbindung zu
einer Datenbank, die hergestellt wird, ein Benutzerprofil und ein Kennwort
zu. Wenn die Variablen LOGIN und PASSWORD nicht mit dem Benutzerprofil
und Kennwort übereinstimmen, die einer geöffneten Verbindung zugeordnet sind,
wird die Verbindung geschlossen und erneut hergestellt, und die Werte von
LOGIN und PASSWORD werden der erneut geöffneten Verbindung zugeordnet.
- Verwenden Sie die Net.Data-Variablen START_ROW_NUM und
RPT_MAX_ROWS, um die Größe der zurückgegebenen Tabellen zu verringern.
Wenn in einer SQL-Anweisung SELECT die Ergebnismenge hunderte von Datensätzen
enthält, übertragen Sie eine Untermenge der Ergebnismenge an den Browser,
indem Sie START_ROW_NUM wie einen verschiebbaren Cursor und darüber hinaus
RPT_MAX_ROWS verwenden, um die Anzahl der zurückgegebenen Datensätze zu
beschränken. Sie müssen beachten, daß Net.Data die Abfrage jedes
Mal durchführt, da der Status nicht angegeben wird. Sie können jedoch
die Net.Data-Unterstützung für permanente Makros verwenden, um die
Ergebnismenge in einer Net.Data-Tabelle zu speichern, die bis zum Ende
der Transaktion bestehen bleibt. Informationen zu permanenten
Net.Data-Makros finden Sie im Abschnitt Transaktionsverwaltung mit permanenten Makros.
- Ziehen Sie den Aufruf einer gespeicherten Prozedur in Erwägung, die
statisches SQL verwendet. Dynamisches SQL wird zur Laufzeit
vorbereitet, während statisches SQL bei der Vorkompilierung vorbereitet
wird. Die SQL-Sprachumgebung verwendet dynamisches SQL, so daß
SQL-Anweisungen zur Programmlaufzeit ausgeführt werden können. Da die
Vorbereitung von Anweisungen zusätzliche Verarbeitungszeit erfordert, ist das
statische SQL unter Umständen effizienter.
Beachten Sie, daß die SQL-Steuerkomponente ab OS/400 V4R2 einen Cache für
vorbereitete Anweisungen hat. Im Cache speichert die
SQL-Steuerkomponente Informationen zu vorbereiteten Anweisungen und hält diese
Informationen im Systemspeicher. Wenn die gleiche Anweisung erneut
ausgeführt wird, sei dies auch durch einen anderen Benutzer und einen anderen
Job, kann die Anweisung viel schneller ausgeführt werden. Der
systemweite Cache für vorbereitete Anweisungen ist Teil der normalen
SQL-Verarbeitung, für dessen Konfiguration und Aktivierung keine
Benutzereingriffe erforderlich sind. Der Cache trägt unter Umständen
zur Verringerung von Leistungsvorteilen bei, die statisches SQL gegenüber
dynamischem SQL hat.
[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]