Sortieren ist für eine Abfrage häufig erforderlich, wobei die richtige Konfiguration der Sortierzwischenspeicherbereiche für die Leistung der Abfrage eine wichtige Rolle spielen kann. Sortieren ist in folgenden Fällen erforderlich:
Ein Sortiervorgang umfaßt zwei Phasen:
Die Art, wie der Sortiervorgang innerhalb dieser beiden Phasen verarbeitet wird, führt zu verschiedenen Kategorien oder Arten von Sortierung, mit deren Hilfe sich der Sortiervorgang beschreiben läßt. Innerhalb der Sortierphase kann der Sortiervorgang in die Kategorien "mit Überlauf" oder "ohne Überlauf" eingeordnet werden. Bei der Rückgabe der Ergebnisse der Sortierphase läßt sich der Sortiervorgang als "über eine Pipe geleitet" oder "nicht über eine Pipe geleitet" klassifizieren.
Die folgenden Elemente wirken sich auf die Sortierleistung aus:
Ein Vergleich der gesamten CPU-Zeit für die Sortierung mit der Zeit, die für die Ausführung der gesamten Anwendung benötigt wurde, kann entscheidende Hinweise darauf geben, ob ein allgemeines Problem in bezug auf das Sortieren vorliegt. Der Datenbanksystemmonitor kann Hilfestellung geben (siehe Verwenden des Datenbanksystemmonitors). Insbesondere zeigt der Performance Monitor (der aus "Snapshot Monitor" und " Event Monitor" (Ereignismonitor) besteht und über die Steuerzentrale verfügbar ist), standardmäßig neben den Zeiten für Ein-/Ausgaben ( I/O) und Wartezeiten auf Sperren (lock wait) auch die Gesamtsortierzeit ( total sort time an.
Wenn die Gesamtsortierzeit gegenüber den anderen Zeiten relativ groß ist, achten Sie auf folgende Werte, die ebenfalls standardmäßig angezeigt werden:
Im allgemeinen sollten Sie den für das gesamte Exemplar verfügbaren Sortierspeicher (sheapthres) so groß wie möglich definieren, ohne übermäßiges Seitenauslagern zu verursachen. Es ist möglich, daß eine Sortierung vollständig im Sortierspeicher durchgeführt wird. Wenn dies jedoch dazu führt, daß das Betriebssystem übermäßig viele Auslagerungen von Seiten vornehmen muß, um diesen Sortierspeicher unterzubringen, können Sie den Vorteil eines großen Sortierspeichers einbüßen. Bei einer Anpassung der Konfigurationsparameter für die Sortierungen sollten Sie einen Betriebssystemmonitor verwenden, um alle Änderungen bei der Auslagerung zu verfolgen.
Anmerkung: | Nachdem die DB2-Binärsortierung mit Teilschlüssel verbessert wurde, so daß auch nicht ganzzahlige Datentypschlüssel unterstützt werden, ist beim Sortieren langer Schlüssel zusätzlicher Speicherbereich erforderlich. Wenn Sie annehmen, daß lange Schlüssel verwendet werden, erhöhen Sie den Wert des Konfigurationsparameters sortheap. |
Beachten Sie außerdem, daß bei einer über Pipe geleiteten Sortierung der Sortierzwischenspeicher nicht freigegeben wird, bevor die Anwendung den dieser Sortierung zugeordneten Cursor schließt. Auf diese Weise kann eine über Pipe geleitete Sortierung Speicher belegen, bis der Cursor geschlossen wird.
Sie können den Datenbanksystemmonitor und Vergleichstesttechniken bei der Einstellung der Konfigurationsparameter sortheap und sheapthres zur Unterstützung heranziehen. Gehen Sie für jeden Datenbankmanager und den zugehörigen Datenbanken folgendermaßen vor:
Diese Leistungsvariablen werden in der Detailsicht der Leistung von Snapshot Monitor angezeigt.
Wenn die Ermittlung des Durchschnittswerts zu aufwendig ist, verwenden Sie als Wert 80% des maximalen Sortierspeichers.
Dies ist die empfohlene Anfangseinstellung. Anschließend können Sie mit Hilfe von Vergleichstests diesen Wert optimieren.
Sie können darüber hinaus bestimmte Anwendungen und Anweisungen identifizieren, bei denen die Sortierung ein wesentliches Leistungsproblem darstellt:
Anmerkung: | Sie können die EXPLAIN-Tabellen durchsuchen, um herauszufinden, welche Abfragen mit Sortieroperationen verbunden sind. (Siehe Anhang H, EXPLAIN-Programme (SQL).) |