DB2 Universal Database - Systemverwaltung


Sortieren

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:

Verschiedene Arten der Sortierung

Ein Sortiervorgang umfaßt zwei Phasen:

  1. Die Sortierphase
  2. Die Rückgabe der Ergebnisse der Sortierphase

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.

Mit Überlauf und ohne Überlauf
Wenn die Daten, die sortiert werden, nicht vollständig in den Sortierzwischenspeicher (ein Speicherblock, der jedesmal zugeordnet wird, wenn eine Sortierung durchgeführt wird) passen, laufen die Daten in temporäre Datenbanktabellen über. Sortierungen, die keinen Überlauf verursachen, zeigen stets eine bessere Leistung als solche, bei denen ein Überlauf auftritt.

Über Pipe geleitet und nicht über Pipe geleitet
Wenn sortierte Daten direkt zurückgegeben werden können, ohne daß eine temporäre Tabelle zum Speichern der endgültigen sortierten Liste von Daten erforderlich ist, wird dies als ein "über Pipe geleiteter Sortiervorgang" bezeichnet. Wenn die sortierten Daten in einer temporären Tabelle zurückgegeben werden müssen, wird dies als "nicht über Pipe geleiteter Sortiervorgang" bezeichnet. Ein über Pipe geleiteter Sortiervorgang ist immer effizienter als ein nicht über Pipe geleiteter Sortiervorgang.

Optimieren der Parameter mit Auswirkung auf Sortierungen

Die folgenden Elemente wirken sich auf die Sortierleistung aus:

Anzeichen für Probleme bei der Sortierleistung

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:

Prozentsatz von Sortierungen mit Überlauf
Diese Variable (auf der Anzeige mit den Leistungsdaten von Snapshot Monitor) zeigt den Prozentsatz von Sortierungen, bei denen ein Überlauf auftrat (Percentage of overflowed sorts). Wenn der Prozentsatz für Sortierungen mit Überlauf hoch ist, erhöhen Sie den Wert für den Konfigurationsparameter sortheap und/oder sheapthres, wenn es Sortiervorgänge nach Überschreiten des Schwellenwerts gab. (Mit Hilfe von Snapshot Monitor können Sie feststellen, ob es Sortiervorgänge nach Überschreiten des Schwellenwerts gab.)

Sortierungen nach Überschreiten des Schwellenwerts
Wenn Sortierungen nach Überschreiten des Schwellenwerts (Post Threshold Sorts) häufig sind, erhöhen Sie den Wert für den Parameter sheapthres und/oder verringern den Wert für den Parameter sortheap.

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.

Techniken zur Optimierung der Sortierleistung

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:

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).)


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]