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 .
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.
Es ist wahrscheinlich besser, keine externe Sortierung zu verwenden, wenn Folgendes zutrifft:
Um herauszufinden, ob Ihr Report in TABLEF umgewandelt werden kann, verwenden Sie ? STAT (wie beschrieben in Den Sortiertyp abfragen) oder führen Sie eine abgekürzte Version der Anfrage mit einer niedrigen Datensatzbeschränkung und aktivierter externer Sortierung aus. Wenn die Reportstatistiken nach der TABLE-Ausgabe gedruckt werden, wurde er als TABLEF durchgeführt. Wenn die Statistiken vor dem ersten Bildschirm der TABLE-Ausgabe gedruckt werden, wurde TABLE-Verarbeitung verwendet, da es nicht möglich war, ihn in TABLEF umzuwandeln.
Um zu bestimmen, welche Sortierung verwendet wird, werden die folgenden Kriterien in dieser Reihenfolge ausgewertet:
Sie können die externe Sortierung mit dem Befehl SET EXTSORT aktivieren und deaktivieren.
SET EXTSORT = {ON|OFF}
Hierbei gilt:
Aktiviert die selektive Verwendung eines dedizierten externen Sortierprodukts, um Reports zu sortieren. Dieser Wert ist der Default in allen Mainframe-Umgebungen.
Verwendet die interne Sortierprozedur, um alle Reports zu sortieren. Dieser Wert ist der Default in allen Nicht-Mainframe-Umgebungen.
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:
Die interne Sortierprozedur wurde verwendet, um den gesamten Report zu sortieren.
Sie verwenden eine relationale Datenquelle und das RDBMS hat die Daten bereits in der richtigen Reihenfolge bereitgestellt.
Ein externes Sortierprodukt hat den Report sortiert.
Der Report musste nicht sortiert werden.
Vorgehensweise: |
Es gibt zwei Vorteile, wenn Sie eine Schätzung für die Eingabegröße (ESTRECORDS) oder die Reportgröße (ESTLINES) angeben:
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.
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:
Wenn die UNIX TMPDIR- oder Windows TMP-Variable eingestellt wird, muss die Einstellung aufgehoben werden, um die IBITMPDIRnn-Variablen verwenden zu können. Der UNIX-Befehl, um die Einstellung der TMPDIR-Variable aufzuheben, lautet:
unset TMPDIR
Der Windows-Befehl, um die Einstellung der TMP-Variable aufzuheben, lautet:
SET TMP=
Es können unterschiedliche Variable auf dasselbe Verzeichnis verweisen, wenn dies gewünscht wird. Wenn Sie n Arbeitsdateien zuweisen möchten, müssen Sie die Variablen 01 bis n definieren. Die erste Variable, die in der Umgebung fehlt, bestimmt, wie viele Arbeitsdateien verwendet werden. (Wenn Sie weniger als fünf definieren, werden zusätzliche Datein zugewiesen, um die Differenz auszugleichen, und es wird hierzu die Default-Speicherstelle des Systems verwendet.) Je mehr Arbeitsdateien Sie verwenden, und je mehr diese auf unterschiedliche Spindles verteilt werden, umso besser sollte die Leistung sein. Die Haupteinschränkung ist der verfügbare Gesamtspeicherplatz.
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.
Auf IBM i (zuvor i5/OS), ist die Anzahl der Arbeitsdateien auf 9 festgelegt. Sie sind virtuelle Dateien.
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:
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.
Sie verwenden den Befehl SET SORTLIB sowohl, um die Sortier-Utility anzugeben, und für DFSORT und SYNCSORT auf z/OS, um Sortiermeldungen anzuzeigen.
SET SORTLIB = {sortutility|DEFAULT}
Hierbei gilt:
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.
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=*
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.
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.
//FSTRACE DD SYSOUT=*,DCB=(RECFM=FA,LRECL=133,BLKSIZE=133)
SET TRACEUSER = ON SET TRACEON = SORT/1/FSTRACE
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:
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.
IEC130I SYSOUT DD STATEMENT MISSING.
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.
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.
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.
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.)
SET EXTAGGR = aggropt
Hierbei gilt:
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.
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
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.
SET SUMPREFIX = {LST|FST}
Hierbei gilt:
Zeigt den letzten Wert an, wenn alphanumerische Datentypen oder Smart-Datum-Datentypen aggregiert werden. Dieser Wert ist der Defaultwert.
Zeigt den ersten Wert an, wenn alphanumerische Datentypen oder Smart-Datum-Datentypen aggregiert werden.
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.
SET EXTHOLD = {OFF|ON}
Hierbei gilt:
Deaktiviert HOLD-Dateien durch eine externe Sortierung.
Aktiviert HOLD-Dateien durch eine externe Sortierung. Dieser Wert ist der Defaultwert.
WebFOCUS |