Effizienz mit externen Sortierungen verbessern

In diesem Abschnitt:

Vorgehensweise:

Referenz:

Wenn ein Report erzeugt wird, wird er per Default mit einer internen Sortierprozedur sortiert. Diese Sortierprozedur ist optimiert für Reports mit bis zu etwa 180K bis 200K, obwohl sich viele Faktoren auf die Größe der Daten auswirken, die die interne Sortierung bewältigen kann.

Die Datei FOCSORT, die für die interne Sortierung verwendet wird, kann so groß sein, wie es das Betriebssystem erlaubt, und wie viel Platz auf der Festplatte verfügbar ist. Der Benutzer muss für riesige Dateien die Anfrage nicht unterteilen. In vorherigen Releases war die Datei FOCSORT auf 2 GB beschränkt und der Benutzer erhielt eine FOC298-Meldung, wenn die WebFOCUS-Grenze überschritten wurde. Wenn WebFOCUS keine Begrenzung vorschreibt, stellt das Betriebssystem die Warnung und Fehlerhandhabung bereit, die es für die Verwaltung einer FOCSORT-Datei hat, die die Begrenzung überschreitet.

Sie können größere Reports etwas schneller erzeugen, indem Sie spezielle Sortierprodukte, wie z. B. SyncSort oder DFSORT, verwenden, oder in Nicht-Mainframe-Umgebungen die externen WebFOCUS Sortierroutinen.

Um eine externe Sortierung zu verwenden, muss der EXTSORT-Parameter ON sein. Die Verwendung eines StyleSheets deaktiviert externe Sortierung.

Beachten Sie, dass in Mainframe-Umgebungen die externe Sortierung unterstützt wird für Französisch, Spanisch, Deutsch und skandinavische Sprachen (Schwedisch, Dänisch, Finnisch und Norwegisch). Um die Umgebung für den landessprachlichen Support anzugeben, verwenden Sie den Parameter LANG, wie es beschrieben wird unter Reportanwendungen entwickeln .


Nach oben

x
Referenz: Voraussetzungen für externe Sortierung

Sie können die externen Sortierprodukte DFSORT und SyncSort mit jeder TABLE-, FML-, GRAPH- oder MATCH-Anfrage in allen WebFOCUS-Mainframe-Umgebungen verwenden. In anderen Betriebsumgebungen hat WebFOCUS seine eigenen externen Sortierroutinen.


Nach oben

x
Referenz: Verwendungshinweise für externe Sortierung in Nicht-Mainframe-Umgebungen

Es ist wahrscheinlich besser, keine externe Sortierung zu verwenden, wenn Folgendes zutrifft:


Nach oben

x
Vorgehensweise: Bestimmen, welcher Sortierungstyp verwendet wird

Um zu bestimmen, welche Sortierung verwendet wird, werden die folgenden Kriterien in dieser Reihenfolge ausgewertet:

  1. BINS. Wenn ein ganzer Report innerhalb des Arbeitsbereichs (BINS) sortiert werden kann, wird die externe Sortierung nicht aufgerufen, selbst wenn EXTSORT auf ON eingestellt ist.
  2. EXTERNAL. Wenn BINS nicht groß genug ist, um den gesamten Report zu sortieren, und EXTSORT auf ON eingestellt ist, wird die externe Sortier-Utility aufgerufen.

Nach oben

x
Syntax: Externe Sortierung steuern

Sie können die externe Sortierung mit dem Befehl SET EXTSORT aktivieren und deaktivieren.

SET EXTSORT = {ON|OFF}

Hierbei gilt:

ON

Aktiviert die selektive Verwendung eines dedizierten externen Sortierprodukts, um Reports zu sortieren. Dieser Wert ist der Default in allen Mainframe-Umgebungen.

OFF

Verwendet die interne Sortierprozedur, um alle Reports zu sortieren. Dieser Wert ist der Default in allen Nicht-Mainframe-Umgebungen.


Nach oben

x
Syntax: Den Sortiertyp abfragen

Um zu bestimmen, welche Sortierung für einen gegebenen Report verwendet wird, geben Sie den folgenden Befehl nach der Reportanfrage aus:

? STAT

Der Befehl zeigt die folgenden Werte für den SORT USED-Parameter an:

FOCUS

Die interne Sortierprozedur wurde verwendet, um den gesamten Report zu sortieren.

SQL

Sie verwenden eine relationale Datenquelle und das RDBMS hat die Daten bereits in der richtigen Reihenfolge bereitgestellt.

EXTERNAL

Ein externes Sortierprodukt hat den Report sortiert.

NONE

Der Report musste nicht sortiert werden.


Nach oben

x
Eine Schätzung der Eingabedatensätze oder der Reportgröße für die Sortierung bereitstellen

Vorgehensweise:

Es gibt zwei Vorteile, wenn Sie eine Schätzung für die Eingabegröße (ESTRECORDS) oder die Reportgröße (ESTLINES) angeben:



x
Syntax: Eine Schätzung der Eingabedatensätze oder der Reportgröße für die Sortierung bereitstellen
ON TABLE SET ESTRECORDS nON TABLE SET ESTLINES n						

Hierbei gilt:

n

Ist die geschätzte Anzahl der Datensätze oder Zeilen, die sortiert werden sollen.


Nach oben

x
Arbeitsdateien und Rückgabecodes sortieren

Referenz:

In Nicht-Mainframe-Umgebungen verwenden externe Sortierungen temporäre Arbeitsdateien, um zwischenzeitlich Sortierergebnisse zu speichern. Sie müssen sich für jeden externen Sortiertyp darüber bewusst sein, wie Sortierarbeitsdateien erstellt und verwendet werden.



x
Referenz: Sortierarbeitsdateien auf UNIX, Windows und OpenVMS

Während die interne Sortierung nur eine Arbeitsdatei verwendet, nämlich FOCSORT (zugewiesen im EDATEMP-Verzeichnis), erlaubt die externe Sortierung bis zu 31 Arbeitsdateien, die auf einem oder mehreren Laufwerken (Spindles) oder Verzeichnissen zugewiesen sind. (Warnmeldung: Es kann jede dieser Arbeitsdateien sehr groß werden. Rechnen Sie damit, dass ein Vielfaches des Gesamtspeicherplatzes verwendet wird, den FOCSORT erfordert.)

Per Default werden fünf Arbeitsdateien im /tmp-Verzeichnis auf UNIX zugewiesen, oder im Verzeichnis, auf das die TMP-Umgebungsvariable in Windows verweist. Es kann sein, dass der Sortierarbeitsspeicher nicht ausreicht, und selbst wenn die Dateien in das Verzeichnis passen, reichen fünf Dateien wahrscheinlich für optimale Leistung nicht aus. Außerdem kann es zu einer weiteren Beeinträchtigung der Leistung kommen, wenn sich alle Sortierarbeitsdateien auf derselben Festplatte befinden.

Sie haben zwei andere Optionen:

Die Arbeitsdateinamen werden erzeugt von der Funktion ANSI tempnam, aber die Namen fangen alle mit den Zeichen srtwk an. Wenn der Sortiervorgang normal endet, oder beendet wird aufgrund eines feststellbaren Fehlers (normalerweise Speicherplatzüberlauf), werden alle zugewiesenen Arbeitsdateien gelöscht. Es gibt keine explizite Möglichkeit, sie zu speichern. Wenn es zu einem anderen abnormalen Abbruch kommt, kann es sein, dass srtwk-Dateien auf der Festplatte zurückbleiben. Sie können und sollten sie löschen.



x
Referenz: Sortierarbeitsdateien auf IBM i

Auf IBM i (zuvor i5/OS), ist die Anzahl der Arbeitsdateien auf 9 festgelegt. Sie sind virtuelle Dateien.



x
Referenz: Rückgabecodes der externen WebFOCUS-Sortierung

Es wird die WebFOCUS-Fehlermeldung FOC909 für alle Fehler bei der externen Sortierung ausgegeben. Es wird ein zusätzlicher dreistelliger Code bereitgestellt, von dem die zwei letzten Stellen interessant sind. Wenn Ihre Fehlernummer endet in:


Nach oben

x
Externe Mainframe-Sortier-Utilitys und -Meldungsoptionen

In diesem Abschnitt:

Vorgehensweise:

Es werden per Default Fehlermeldungen, die von einem externen Mainframe-Sortierprodukt erstellt wurden, nicht angezeigt. Sie können jedoch diese Meldungen auf Ihrem Bildschirm für Diagnosezwecke anzeigen.



x
Vorgehensweise: Eine Sortier-Utility und Meldungsoptionen auswählen

Sie verwenden den Befehl SET SORTLIB sowohl, um die Sortier-Utility anzugeben, und für DFSORT und SYNCSORT auf z/OS, um Sortiermeldungen anzuzeigen.

  1. Geben Sie den Befehl SET SORTLIB aus, um die Sortier-Utility anzugeben, die verwendet wird:
    SET SORTLIB = {sortutility|DEFAULT}

    Hierbei gilt:

    sortutility

    Kann einer der folgenden Werte sein:

    DFSORT für DFSORT ohne Meldungen.

    MVSMSGDF für DFSORT mit Meldungen.

    SYNCSORT für SyncSort ohne Meldungen.

    MVSMSGSS für SyncSort mit Standardmeldungen.

    MVSMSGSD für SyncSort mit Debug-Meldungen (ausführlich).

    DEFAULT für DFSORT. Es ist jedoch effizienter und es wird sehr empfohlen, dass Sie die Sortier-Utility explizit mit einem der anderen Werte angeben.

  2. Wenn Sie eine Sortieroption angegeben haben, die auf z/OS Sortiermeldungen erzeugt, müssen Sie die Sortiermeldungen an den Batch-Ausgabestrom oder eine Datei richten.

    Ordnen Sie DDNAME SYSOUT dem Batch-Ausgabestrom zu oder einer Datei auf z/OS, indem Sie die entsprechende folgende DD-Card in Ihren server batch JCL einfügen, falls sie sich dort noch nicht befindet. Beispielsweise weist die folgende DD-Card dem Batch-Ausgabestrom DDNAME SYSOUT zu:

    //SYSOUT DD SYSOUT=*


x
Fehler bei der externen Sortierung diagnostizieren

Wenn eine externe Sortierung einen Fehler erzeugt, können Sie Tracing für die Sortierverarbeitung erzeugen, und die FOCUS-Rückgabecodes und Meldungen untersuchen, um das Problem zu diagnostizieren.



x
Vorgehensweise: Sortierverarbeitung tracen

Wenn ein Problem bei der externen Sortierung vorkommt, wird eine der folgenden Meldungen erzeugt:

(FOC909)  CRITICAL ERROR IN EXTERNAL SORT.  RETURN CODE IS: xxxx
(FOC1810) External sort not found
(FOC1899) Load of %1 (external-sort module) under %2 failed

Als Antwort auf diese Meldungen und für alle anderen Probleme mit der Sortierung, ist es hilfreich, Sortierverarbeitung zu tracen. Informationen darüber, wie Sie Probleme bei der externen Sortierung diagnostizieren, finden Sie unter Fehler bei der externen Sortierung diagnostizieren.

  1. Weisen Sie dem Terminal oder einer Datei DDNAME FSTRACE zu. Das folgende Beispiel sendet Tracing-Ausgabe an das Terminal:
    //FSTRACE  DD  SYSOUT=*,DCB=(RECFM=FA,LRECL=133,BLKSIZE=133)
  2. Aktivieren Sie das Tracing, indem Sie die folgenden Befehle in einem unterstützten Profil oder einer unterstützten FOCEXEC hinzufügen:
    SET TRACEUSER = ON
    SET TRACEON  = SORT/1/FSTRACE


x
Referenz: Meldungen für die externe Sortierung und Rückgabecodes

Wenn Sie eine FOC909-Meldung erhalten, enthält sie einen Rückgabecode:

(FOC909)  CRITICAL ERROR IN EXTERNAL SORT.  RETURN CODE IS: xxxx							

Sie können auch eine der folgenden Meldungen erhalten:

(FOC1810) External sort not found
(FOC1899) Load of %1 (external-sort module) under %2 failed

Die folgenden Hinweise treffen zu, wenn diese Meldung oder eine FOC1800- oder FOC1899-Meldung von einer TABLE-Anfrage erzeugt wird:

  • Der häufigste Wert für xxxx ist 16. Es wird jedoch der Rückgabecode 16 für mehrere Probleme ausgegeben. Hierzu gehören unter anderem:
    • Syntaxfehler.
    • Mangel an Speicherplatz.
    • E/A-Fehler (je nach Installationsoptionen).
    • Platzprobleme mit der Ausgabe.
    • Platzprobleme mit den Arbeitsdateien.

    Um den Fehler zu diagnostizieren, müssen Sie externe Sortiermeldungen erzeugen (mit den Anweisungen in Eine Sortier-Utility und Meldungsoptionen auswählen und Sortierverarbeitung tracen) und dann den Fehler reproduzieren.

    Folgen Sie für Rückgabecodes, die nachfolgend nicht beschrieben sind, derselben Prozedur, die für den Rückgabecode 16 beschrieben wird.

  • Der Rückgabecode 20 wird ausgegeben von DFSORT unter z/OS, wenn Meldungen angefordert wurden (mit der Option MVSMSGDJ des Befehls SET SORTLIB), aber es fehlt die DD-Card SYSOUT. DFSORT wird beendet, nachdem der Rückgabecode ausgegeben wird. SyncSort versucht unter denselben Bedingungen, SYSOUT zu öffnen, was die folgende Meldung erzeugt, und fährt dann mit Meldungen fort, die für den Operator oder das Terminal geschrieben werden:
    IEC130I SYSOUT DD STATEMENT MISSING.
  • Der Rückgabecode 36 oder eine FOC1899-Meldung unter z/OS bedeutet, dass das externe Sortiermodul nicht gefunden werden konnte. Überprüfen Sie die zugewiesenen STEPLIBs.

Wenn REBUILD INDEX eine externe Sortierung aufruft, die fehlschlägt, erzeugt es eine Meldung, die der folgenden Meldung ähnelt:

ERROR OCCURRED IN THE SORT yyyyyyyyzzzzzzzz							

In diesem Fall lautet der Rückgabecode yyyyyyyy und wird in hexadezimaler Schreibweise ausgedrückt. Die letzten acht Stellen (zzzzzzzz) sollten ignoriert werden.

Übertragen Sie den Rückgabecode in Dezimalschreibweise und folgen Sie den Anweisungen für Rückgabecodes in einer TABLE-Anfrage.

Beachten Sie auch, dass, wenn eine TABLE-Anfrage einen anderen Rückgabecode als Null von einer externen Sortierung zurückgibt, FOCUS beendet wird. Wenn im Gegensatz hierzu REBUILD INDEX einen anderen Rückgabecode als Null von einer externen Sortierung erhält, wird der REBUILD-Befehl beendet, aber FOCUS fährt fort.



x
Referenz: Auf eine Meldung über zu wenig Sortierarbeitsspeicher reagieren

Bevor Sie diese Anweisungen befolgen, stellen Sie sicher, dass externe Sortiermeldungen erzeugt wurden (Informationen finden Sie unter Eine Sortier-Utility und Meldungsoptionen auswählen) und dass sie deutlich zeigen, dass der Grund für den Fehler unzureichender Sortierarbeitsspeicher war.

  1. Schätzen Sie, wie viele Ausgabezeilen die Anfrage erzeugen wird.
  2. Stellen Sie den ESTLINES-Parameter in der Anfrage oder der FOCEXEC ein. Weitere Informationen finden Sie unter Eine Schätzung der Eingabedatensätze oder der Reportgröße für die Sortierung bereitstellen.

    WebFOCUS reicht diese Schätzung an die externe Sortier-Utility mit einer Parameterliste weiter.

    Überschreiben Sie die DD-Karten für SORTWKnn, S001WKnn, DFSPARM oder $SORTPARM nicht ohne direkte Anweisungen vom technischen Support. Die Anweisungen in Eine Sortier-Utility und Meldungsoptionen auswählen, Sortierverarbeitung tracen und Eine Schätzung der Eingabedatensätze oder der Reportgröße für die Sortierung bereitstellen sollten gleichwertige Funktionen bereitstellen.


Nach oben

x
Aggregation nach externer Sortierung (nur in Mainframe-Umgebungen)

Vorgehensweise:

Referenz:

Es können externe Sortierungen verwendet werden, um Aggregation mit einer deutlichen Verkürzung der Verarbeitungszeit im Vergleich zur internen Sortierfunktion durchzuführen. Die Gewinne sind mit relativ einfachen Anfragen mit großen Datenquellen am deutlichsten zu sehen.

Wenn Aggregation von einer externen Sortierung durchgeführt wird, sind die statistischen Variablen &RECORDS und &LINES gleich, da die externen Sortierprodukte keine Linienanzahl für das Antwortset zurückgeben. Dies ist eine Verhaltensänderung und sie wirkt sich auf alle Codes aus, die den Wert von &LINES prüfen. (Wenn Sie &LINES testen müssen, verwenden Sie dieses Feature nicht.)



x
Syntax: Aggregation in Ihrer externen Sortierung verwenden
SET EXTAGGR = aggropt						

Hierbei gilt:

aggropt

Kann einer der folgenden Werte sein:

OFF verhindert Aggregation durch eine externe Sortierung.

NOFLOAT ermöglicht Aggregation, wenn keine Gleitkomma-Datenfelder vorhanden sind.

ON ermöglicht Aggregation durch eine externe Sortierung. Dieser Wert ist der Defaultwert.



x
Referenz: Verwendungshinweise für die Aggregation mit einer externen Sortierung


Beispiel: Die Ausgabe ändern, indem eine externe Sortierung für die Aggregation verwendet wird

Wenn Sie SUM mit einem alphanumerischen Feld in Ihrer Reportanfrage verwenden, ohne eine externe Sortierung zu verwenden, wird die letzte Instanz der sortierten Felder in der Ausgabe angezeigt. Wenn Sie Aggregation in der externen Sortierung aktivieren, wird stattdessen der erste Datensatz angezeigt. Sie können jedoch die Reihenfolge der Anzeige steuern, indem Sie den Parameter SUMPREFIX verwenden. Mit SUMPREFIX = LST (der Default) wird die letzte Instanz selbst mit EXTAGGR = ON angezeigt.

Der folgende Befehl stellt die Aggregation auf ON und behält die Einstellung von SUMPREFIX auf LST bei (der Default), und zeigt daher den letzten Datensatz an:

SET EXTAGGR = ON
SET SUMPREFIX = LST
TABLE FILE CAR
SUM CAR BY COUNTRY
END

Die Ausgabe ist:

COUNTRY     CAR     
-------     ---     
ENGLAND     TRIUMPH 
FRANCE      PEUGEOT 
ITALY       MASERATI
JAPAN       TOYOTA  
W GERMANY   BMW

Hinweis: SUMPREFIX wird beschrieben in Die Abrufreihenfolge bei Aggregation ändern (Nur in Mainframe-Umgebungen) .

Mit SUMPREFIX = FST lautet die Ausgabe:

COUNTRY     CAR       
-------     ---       
ENGLAND     JAGUAR    
FRANCE      PEUGEOT   
ITALY       ALFA ROMEO
JAPAN       DATSUN    
W GERMANY   AUDI

Nach oben

x
Die Abrufreihenfolge bei Aggregation ändern (Nur in Mainframe-Umgebungen)

Vorgehensweise:

Wenn ein externes Sortierprodukt Aggregation von alphanumerischen Datumsformaten oder Smart-Datumsformaten durchführt, unterscheidet sich die Reihenfolge des zurückgegebenen Antwortsets von der Reihenfolge des intern sortierten Antwortsets.

Externe Sortierprodukte geben den ersten alphanumerischen Datensatz oder Smart-Datum-Datensatz zurück, der aggregiert wurde. Umgekehrt gibt interne Sortierung den letzten Datensatz zurück.

Der Befehl SUMPREFIX ermöglicht es Benutzern, die Anzeigereihenfolge des Antwortsets zu wählen.



x
Syntax: Abrufreihenfolge einstellen
SET SUMPREFIX = {LST|FST}

Hierbei gilt:

LST

Zeigt den letzten Wert an, wenn alphanumerische Datentypen oder Smart-Datum-Datentypen aggregiert werden. Dieser Wert ist der Defaultwert.

FST

Zeigt den ersten Wert an, wenn alphanumerische Datentypen oder Smart-Datum-Datentypen aggregiert werden.


Nach oben

x
Eine HOLD-Datei mit einer externen Sortierung erstellen (Nur in Mainframe-Umgebungen)

Vorgehensweise:

Referenz:

Sie können externe Mainframe-Sortierpakete verwenden, um HOLD-Dateien zu erstellen, was die Verarbeitungszeit deutlich reduziert. Die Gewinne sind mit relativ einfachen Anfragen mit großen Datenquellen am deutlichsten zu sehen.



x
Syntax: HOLD-Dateien mit einer externen Sortierung erstellen
SET EXTHOLD = {OFF|ON}

Hierbei gilt:

OFF

Deaktiviert HOLD-Dateien durch eine externe Sortierung.

ON

Aktiviert HOLD-Dateien durch eine externe Sortierung. Dieser Wert ist der Defaultwert.



x
Referenz: Verwendungshinweise für die Erstellung einer HOLD-Datei mit einer externen Sortierung

WebFOCUS