Statistiques pour les fonctions définies par l'utilisateur

Pour créer des informations statistiques pour les fonctions définies par l'utilisateur (UDF), éditez le fichier SYSSTAT.ROUTINES .

L'utilitaire runstats ne collecte pas de statistiques pour les fonctions définies par l'utilisateur. Si des statistiques UDF sont disponibles, l'optimiseur peut les utiliser lorsqu'il estime les coûts de divers plans d'accès. Si les statistiques ne sont pas disponibles, l'optimiseur utilise des valeurs par défaut qui supposent une fonction UDF simple.

Le tableau 1 répertorie les colonnes de vue de catalogue pour lesquelles vous pouvez fournir des estimations afin d'améliorer les performances. Notez que seules les valeurs de colonne dans SYSSTAT.ROUTINES (à l'exclusion de SYSCAT.ROUTINES) peut être modifiée par les utilisateurs.

Tableau 1. Statistiques de fonction (SYSCAT.ROUTINES et SYSSTAT.ROUTINES)
Statistique Description
IOS_PER_INVOC Nombre estimé de demandes de lecture ou d'écriture exécutées chaque fois qu'une fonction est appelée
INSTS_PER_INVOC Nombre estimé d'instructions machine exécutées chaque fois qu'une fonction est appelée
IOS_PER_ARGBYTE Nombre estimé de demandes de lecture ou d'écriture exécutées par octet d'argument d'entrée
INSTS_PAR_ARGBYTE Nombre estimé d'instructions machine exécutées par octet d'argument d'entrée
POURCENTAGE_OCTETS_CIBLE Pourcentage moyen estimé d'octets d'argument d'entrée qu'une fonction traitera réellement
INITIAL_IOS Nombre estimé de demandes de lecture ou d'écriture exécutées la première ou la dernière fois qu'une fonction est appelée
INSTALLATIONS INITIALES Nombre estimé d'instructions machine exécutées la première ou la dernière fois qu'une fonction est appelée
Cardinalité Nombre estimé de lignes générées par une fonction de table
Par exemple, prenons EU_SHOE, une fonction définie par l'utilisateur qui convertit une taille de chaussure américaine en une taille de chaussure européenne équivalente. Pour cette fonction définie par l'utilisateur, vous pouvez définir les valeurs des colonnes de statistiques dans SYSSTAT.ROUTINES comme suit:
  • INSTS_PER_INVOC: Définissez sur le nombre estimé d'instructions machine requises pour:
    • Appeler EU_SHOE
    • Initialiser la chaîne de sortie
    • Renvoyer le résultat
  • INSTS_PER_ARGBYTE. Défini sur le nombre estimé d'instructions machine requises pour convertir la chaîne d'entrée en une taille de chaussure européenne
  • PERCENT_ARGBYTES: Défini sur 100, indiquant que la totalité de la chaîne en entrée doit être convertie
  • INITIAL_INSTS, IOS_PER_INVOC, IOS_PER_ARGBYTE et INITIAL_IOS. Chaque valeur est définie sur 0, car cette fonction définie par l'utilisateur effectue uniquement des calculs
PERCENT_ARGBYTES serait utilisé par une fonction qui ne traite pas toujours la totalité de la chaîne d'entrée. Par exemple, prenons LOCATE, une fonction définie par l'utilisateur qui accepte deux arguments en entrée et qui renvoie la position de départ de la première occurrence du premier argument dans le deuxième argument. Supposons que la longueur du premier argument soit suffisamment petite pour être insignifiante par rapport au deuxième argument et que, en moyenne, 75% du deuxième argument soit recherché. Sur la base de ces informations et des hypothèses suivantes, PERCENT_ARGBYTES doit être défini sur 75:
  • La moitié du temps où le premier argument n'est pas trouvé, ce qui entraîne la recherche de l'ensemble du deuxième argument
  • Le premier argument est également susceptible d'apparaître n'importe où dans le deuxième argument, ce qui entraîne la recherche de la moitié du deuxième argument (en moyenne) lorsque le premier argument est trouvé.

Vous pouvez utiliser INITIAL_INSTS ou INITIAL_IOS pour enregistrer le nombre estimé d'instructions machine ou de demandes de lecture ou d'écriture effectuées la première ou la dernière fois qu'une fonction est appelée ; cela peut représenter le coût, par exemple, de la configuration d'une zone de mémoire auxiliaire.

Pour obtenir des informations sur les entrées-sorties et les instructions utilisées par une fonction définie par l'utilisateur, utilisez la sortie fournie par votre compilateur de langage de programmation ou par les outils de surveillance disponibles pour votre système d'exploitation.