Amélioration d'efficacité avec les tri externes

Dans cette section :

Comment :

Référence :

Lorsqu'un rapport est généré, il est trié par une procédure de tri interne. La procédure de tri est optimisée pour les rapports d'une taille de 180 à 200K, pourtant de nombreux facteurs déterminent la taille des données qui peuvent être prises en charge par le tri interne.

Le fichier FOCSORT utilisé pour le tri interne peut être de n'importe quelle taille autorisée par le système d'exploitation et l'espace disque disponible. L'utilisateur ne doit pas décomposer une requête pour que celle-ci puisse contenir des fichiers de taille importante. Dans les versions précédentes, le fichier FOCSORT était limité à 2 giga-octets et l'utilisateur recevait un message FOC298 au moment du dépassement de la limite WebFOCUS. Comme WebFOCUS n'applique pas de limite, le système d'exploitation fournit tout traitement d'avertissement ou d'erreur qui est disponible pour la gestion d'un fichier FOCSORT qui dépasse les limites.

Vous pouvez générer de plus grands rapports quelque peu plus rapidement, en utilisant des produits de tri spécialisés, tels que SyncSort, DFSORT ou, dans les environnements non-mainframe, les sous-programmes de tri externe WebFOCUS.

Pour utiliser un tri externe, le paramètre EXTSORT doit être actif. L'utilisation d'une feuille de style désactive le tri externe.

Notez que dans les environnements Mainframe, le tri externe fonctionne avec les langues nationales française, espagnole, allemande et scandinaves (suédoise, dannoise, finnoise et norvégienne). Pour préciser l'environnement de support de langues nationales, utilisez le paramètre LANG comme le décrit dans Développement d'applications de reporting .


Haut de page

x
Référence : Conditions de tri externe

Les produits de tri externe DFSORT et SyncSort peuvent être utilisés avec toute requête TABLE, FML, GRAPH ou MATCH dans tous les environnements mainframe de WebFOCUS. Pour tous les autres environnements d'exploitation, WebFOCUS utilise ses propres sous-programmes de tri externe.


Haut de page

x
Référence : Notes d'utilisation pour le tri externe dans un environnement non Mainframe

Il vaut mieux ne pas utiliser de tri externe dans les situations suivantes :


Haut de page

x
Comment : Déterminer le type de tri utilisé

Pour déterminer quel tri est utilisé, les critères suivants sont évalués, dans l'ordre suivant :

  1. BINS. Si un rapport entier peut être trié dans la zone de travail (BINS), le tri externe n'est pas appelé, même si EXTSORT est mis à ON.
  2. EXTERNE. Si BINS n'est pas assez grand pour trier le rapport en entier et si EXTSORT est sur ON, l'utilitaire de tri externe sera invoqué.

Haut de page

x
Syntaxe : Contrôler le tri externe

Vous pouvez activer et désactiver la fonctionnalité de tri externe en utilisant la commande SET EXTSORT.

SET EXTSORT = {ON|OFF}

où :

ON

permet l'utilisation sélective d'un produit de tri externe spécialisé pour trier les rapports. Il s'agit de la valeur par défaut dans tous les environnements mainframe.

OFF

utilise une procédure de tri interne pour trier tous les rapports Il s'agit de la valeur par défaut dans tous les environnements mainframe.


Haut de page

x
Syntaxe : Interroger le type de tri

Pour déterminer quel tri est utilisé pour un rapport quelconque, lancez la commande suivante après la requête de rapport :

? STAT

La commande affiche les valeurs suivantes pour le paramètre SORT USED :

FOCUS

Indique que la procédure de tri interne a été utilisée pour trier le rapport complet.

SQL

Vous utilisez une source de données relationnelle et le SGBDR a déjà fournit les données dans le bon ordre.

EXTERNE

Un produit de tri externe a trié le rapport.

NONE

Le rapport n'exige pas de tri.


Haut de page

x
Estimer le nombre d'enregistrements d'entrée ou la taille de rapport pour le tri

Comment :

Il existe deux avantages liés à la fourniture d'une estimation de taille d'entrée (ESTRECORDS) ou de taille de rapport (ESTLINES):



x
Syntaxe : Estimer le nombre d'enregistrements d'entrée ou la taille de rapport pour le tri
ON TABLE SET ESTRECORDS nON TABLE SET ESTLINES n						

où :

n

est le nombre prévu d'enregistrements ou de lignes à trier.


Haut de page

x
Trier de fichiers de travail et de codes de retour

Référence :

Dans les environnements non Mainframe, la fonctionnalité de tri externe utilise des fichiers de travail temporaires pour stocker les résultats de tri intermédiaires. Il est important que pour chaque type de tri externe, vous avez des connaissances sur le fonctionnement des fichiers de travail, leur création et leur utilisation.



x
Référence : Tri de fichiers de travail sur UNIX, Windows ou OpenVMS

Bien que l'utilitaire de tri externe n'utilise qu'un seul fichier de travail, FOCSORT (attribué dans le répertoire EDATEMP), le tri externe permet d'utiliser jusqu'à 31 fichiers de travail, affectés dans un ou plusieurs lecteurs de disque (axes) ou répertoires. (Avertissement : il est possible que les fichiers de travail prennent beaucoup d’espace. Comptez à utiliser davantage d'espace disque que ne l'exige FOCSORT).

Par défaut, cinq fichiers de travail sont alloués dans le répertoire /tmp dans UNIX, ou dans le répertoire auquel pointe la variable de l'environnement TMP dans Windows. Il se peut que cela ne soit pas assez d'espace de travail et, même si les fichiers entrent dans le répertoire /, il est probable que les cinq fichiers ne suffissent pas pour assurer la performance optimale. De plus, si tous les fichiers de travail se trouvent sur le même disque, cela diminue la performace encore plus.

Vous avez deux autres options :

Les noms des fichiers de travail sont générés par la fonction ANSI tempnam, cependant, les noms commencent tous par srtwk. Si le processus de tri fini normalement ou est annulé à cause d'une erreur detectable (généralement un dépassement d'espace disque), tous les fichiers de tâches affectés sont supprimées. Il n'y a pas de moyen formel pour les sauvegarder. Si une autre terminaison anormale survient, les fichiers srtwk peuvent être stockés sur le disque. Vous pouvez et devriez les supprimer.



x
Référence : Trier les dossiers de travail sur IBM i

Sur IBM i (anciennement i5/OS), le nombre de fichiers de travail est fixé sur 9. Il s'agit de fichiers virtuels.



x
Référence : Codes de retour de tri externe WebFOCUS

Le message d'erreur WebFOCUS FOC909 est délivré pour toutes les erreurs de tri externes. Un code à trois chiffres supplémentaire est fourni, dont les deux derniers chiffres sont le point d'intérêt. Si vous recevez un chiffre d'erreur se terminant par :


Haut de page

x
Utilitaires de tri externe Mainframe et options de message

Dans cette section :

Comment :

Par défaut, les messages d'erreur créés par votre produit de tri externe mainframe ne s'affichent pas. Cependant, vous pouvez afficher ces messages à votre écran à titre diagnostique.



x
Comment : Sélectionner un utilitaire de tri et des options de message

Si vous utilisez la commande SET SORTLIB pour spécifier l'utilitaire de tri utilisé dans votre site et pour les variables DFSORT et SYNCSORT sur z/OS, pour afficher les messages de tri.

  1. Lancer la commande SET SORTLIB pour spécifier l'utilitaire de tri utilisé :
    SET SORTLIB = {sortutility|DEFAULT}

    où :

    sortutility

    peut prendre l'une des valeurs suivantes :

    DFSORT pour DFSORT sans messages.

    MVSMSGDF pour DFSORT sans messages.

    SYNCSORT pour SyncSort sans messages.

    MVSMSGSS pour SyncSort avec messages standards.

    MVSMSGSD pour SyncSort avec messages débogage (détaillés).

    DEFAULT pour DFSORT. Cependant, il est plus efficace et fortement recommandé de spécifier explicitement l'utilitaire de tri en utilisant l'une des autres valeurs.

  2. Si vous avez spécifié une option de tri qui crée des messages de tri sur z/OS, vous devez diriger les messages de tri au flux de sortie par lot, ou à un fichier.

    Attribuez DDNAME SYSOUT au flux de sortie par lot ou à un fichier sur z/OS en insérant la carte DD suivante appropriée dans votre JCL par lot du serveur, s'il n'y existe pas. Par exemple, la carte DD suivante attribue DDNAME SYSOUT au flux de sortie par lot :

    //SYSOUT DD SYSOUT=*


x
Identification d'erreurs de tri externe

Lorsqu'un tri externe crée une erreur, vous pouvez créer une trace du traitement de tri et examiner les codes de retour et les messages FOCUS pour identifier le problème.



x
Comment : Tracer le traitement de tri

Lorsqu'un problème de tri externe se produit, l'un des messages suivants s'affiche :

(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

En réponse à ces messages, ainsi que pour tout autre problème lié au tri, il est utile de tracer le traitement de tri. Pour plus d'informations sur l'identification de problèmes de tri externe, consultez Identification d'erreurs de tri externe.

  1. Alloue DDNAME FSTRACE au terminal ou au fichier. L'exemple suivant dirige la sortie de trace vers le terminal:
    //FSTRACE  DD  SYSOUT=*,DCB=(RECFM=FA,LRECL=133,BLKSIZE=133)
  2. Activez la trace en ajoutant les commandes suivantes dans n'importe quel profil supporté ou dans un FOCEXEC :
    SET TRACEUSER = ON
    SET TRACEON  = SORT/1/FSTRACE


x
Référence : Messages de tri externe et codes de retour

Lorsque vous recevez un message FOC909, il inclut un code de retour :

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

Il se peut que vous receviez aussi l'un des messages suivants :

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

Les notes suivantes s'appliquent lorsque ce message ou un FOC1800 ou un message FOC1899 est créé par une requête TABLE.

  • La valeur la plus courante de xxxx est 16. Cependant, le code de retour 16 est lancé pour de nombreux problèmes, y compris mais non de façon limitative les :
    • Erreurs de syntaxe.
    • Pénuries de mémoire.
    • Erreurs E / S (selon les options d'installation).
    • Les problèmes liés à l'espace avec sortie.
    • Les problèmes liés à l'espace avec des fichiers de travail.

    Afin de diagnostiquer l'erreur, vous devez générer des messages de tris externes (à l'aide des instructions compris dans les chapitres Sélectionner un utilitaire de tri et des options de message et Tracer le traitement de tri et ensuite reproduire l'échec.

    Pour les codes de retour non décrit ci-dessous, suivez la même procédure que celle décrite pour le code de retour 16.

  • Le code de retour 20 est lancé par DFSORT sous z/OS si des messages ont été demandés (en utilisant l'option MVSMSGDJ de la commande SET SORTLIB) mais que la carte SYSOUT DD est manquante. DFSORT se termine après avoir lancé le code de retour. Sous les mêmes conditions, SyncSort tente d'ouvrir SYSOUT, créant le message suivant, puis continue avec des messages écrits à l'opérateur ou au terminal.
    IEC130I SYSOUT DD STATEMENT MISSING.
  • Sur z/OS, le code de retour 36 ou un message FOC1899 signifie que le module de tri externe est introuvable ; vérifiez les STEPLIB alloués.

Lorsque REBUILD INDEX appelle un tri externe qui échoue, il crée un message semblable à celui-ci :

ERROR OCCURRED IN THE SORT yyyyyyyyzzzzzzzz							

Dans ce cas, le code de retour est yyyyyyyy et est exprimé en hex. Vous devez ignorer les huit derniers chiffres zzzzzzzz.

Convertissez le code de retour en format décimale et suivez les instructions pour les codes de retour dans une requête TABLE.

Notez aussi que lorsqu'une requête TABLE crée un code de retour non zéro à partir d'un tri externe, FOCUS est annulé. Contrairement à cela, lorsque REBUILD INDEX génère un code de retour non zéro à partir d'un tri externe, la commande REBUILD est annulée mais non pas FOCUS.



x
Référence : Réponse à l'indication d'un espace de travail de tri insuffisant

Avant de suivre ces instructions, assurez-vous que les messages de tri externe ont été générés (pour en savoir plus, consultez Sélectionner un utilitaire de tri et des options de message) et que ceux-ci indiquent clairement que l'échec s'est produit en raison d'un espace de travail de tri insuffisant.

  1. Faites une estimation du nombre de lignes de sortie que la requête va créer.
  2. Définissez le paramètre ESTLINES dans la requête ou dans un FOCEXEC. Pour plus d'informations, consultez Estimer le nombre d'enregistrements d'entrée ou la taille de rapport pour le tri.

    WebFOCUS passe cette estimation à l'utilitaire de tri externe au moyen de la liste de paramètres.

    Ne remplacez pas les cartes DD pour SORTWKnn, S001WKnn, DFSPARM ou $SORTPARM, sauf contre-indication de la part de l'assistance technique. Vous pouvez obtenir des informations équivalentes aux rubriques Sélectionner un utilitaire de tri et des options de message, Tracer le traitement de tri et Estimer le nombre d'enregistrements d'entrée ou la taille de rapport pour le tri.


Haut de page

x
Agrégation par tri externe (environnements mainframe uniquement)

Comment :

Référence :

L'utilisation du tri externe pour effectuer l'agrégation entraîne une diminution du temps de traitement significative par rapport à l'utilisation de l'utilitaire de tri interne. Les augmentations sont surtout remarquables dans le cadre de requêtes simples et de grandes sources de données.

Lorsque l'agrégation s'effectue par un tri externe, les variables statistiques &RECORDS et &LINES sont égales car les produits de tri externe ne renvoient pas de décompte de lignes au jeu de réponses. Cela est un changement de comportement et modifie tout code qui vérifie le valeur de &LINES. (S'il est nécessaire de tester &LINES, n'utilisez pas cette fonctionnalité).



x
Syntaxe : Utiliser l'agrégation dans votre tri externe
SET EXTAGGR = aggropt						

où :

aggropt

peut prendre l'une des valeurs suivantes :

OFF refuse l'agrégation par un tri externe.

NOFLOAT permet l'agrégation s'il n'y a aucun champs de données de point flottant présents.

ON permet l'agrégation par un tri externe. Il s'agit de la valeur par défaut.



x
Référence : Notes d'utilisation pour agréger avec un tri externe


Exemple : Changement de sortie en utilisant des tri externes pour l'agrégation

Si vous appliquez SUM à un champ alphanumérique dans votre requête de rapport sans utiliser un tri externe, la dernière instance des champs triés s'affiche dans la sortie. L'activation de l'agrégation dans le tri externe affiche le premier enregistrement plutôt. Cependant, vous pouvez contrôlez l'ordre d'affichage à l'aide du paramètre SUMPREFIX. Avec SUMPREFIX = LST (la valeur par défaut), la dernière instance s'affiche même lorsque le paramètre EXTAGGR est défini sur ON.

La commande suivante active l'agrégation et laisse le paramètre SUMPREFIX défini sur LST (la valeur par défaut) et, affiche ainsi le dernier enregistrement :

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

La sortie est :

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

Remarque : SUMPREFIX est décrite à Changement d'ordre de récupération avec l'agrégation (environnements mainframe uniquement) .

Lorsque le paramètre SUMPREFIX est défini sur FST, la sortie est :

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

Haut de page

x
Changement d'ordre de récupération avec l'agrégation (environnements mainframe uniquement)

Comment :

Lorsqu'un tri externe effectue l'agrégation de formats alphanumériques ou de date intelligente, l'ordre du jeu de réponses renvoyé diffère de l'ordre des jeux de réponses triés à l'intérieur.

Les produits de tri externe renvoient le premier enregistrement alphanumérique ou de date intelligente qui a été agrégé. Inversement, le tri interne renvoie le dernier enregistrement.

La commande SUMPREFIX permet aux utilisateurs de choisir l'ordre d'affichage du jeu de réponses.



x
Syntaxe : Définir l'ordre de récupération
SET SUMPREFIX = {LST|FST}

où :

LST

affiche la première valeur lorsque les types de données alphanumériques et de date intelligente sont agrégés. Il s'agit de la valeur par défaut.

FST

affiche la première valeur lorsque les types de données alphanumériques et de date intelligente sont agrégés.


Haut de page

x
Création d'un fichier HOLD avec un tri externe (environnements mainframe uniquement)

Comment :

Référence :

Vous pouvez utiliser des tris externes mainframe pour créer des fichiers HOLD, gagnant beaucoup de temps de traitement. Les augmentations sont surtout remarquables dans le cadre de requêtes simples et de grandes sources de données.



x
Syntaxe : Créer un fichier HOLD avec un tri externe
SET EXTHOLD = {OFF|ON}

où :

OFF

désactive les fichiers HOLD par un tri externe.

ON

active les fichiers HOLD par un tri externe. Il s'agit de la valeur par défaut.



x
Référence : Notes d'utilisation pour la création d'un fichier HOLD avec un tri externe

WebFOCUS