Exemple de création d'une charge de travail de requête à pour un référentiel SQL défini par l'utilisateur

Vous pouvez créer des charges de travail de requête à partir d'instructions SQL qui se trouvent dans les données déchargées dans les tables DB2 for z/OS par des applications de surveillance de requêtes non IBM. Pour ce faire, vous devez mapper des catégories de données sur les colonnes des tables DB2 for z/OS qui contiennent les données déchargées.Cette rubrique montre un exemple des exigences de capture d'instructions SQL depuis de telles données.

Les colonnes des tables DB2 doivent contenir les informations suivantes sur les instructions SQL, leurs métriques d'exécution et les intervalles de temps pendant lesquels l'instruction a été exécutée.

Sous-système DB2
Sous-système DB2 sur lequel les métriques d'exécution et les instructions SQL ont été collectées. (Type de données : SQL CHAR ou VARCHAR)
Nom du plan
Nom du plan DB2. (Type de données : SQL CHAR ou VARCHAR)
Collection
ID de collection du plan ou du module DB2. (Type de données : SQL CHAR ou VARCHAR)
Nom du module
Nom du module DB2. (Type de données : SQL CHAR ou VARCHAR)
Marque de cohérence du module
Marque de cohérence pour le module d'interrogation de base de données ou le module DB2. (Type de données : SQL CHAR ou BINARY)
ID utilisateur primaire
ID utilisateur primaire qui a été utilisé pour exécuter l'instruction. (Type de données : SQL CHAR ou VARCHAR)
Texte de l'instruction
Texte de l'instruction SQL, soit l'instruction entière, soit un fragment. (Type de données : SQL CHAR, VARCHAR ou BINARY)

Ce texte peut être divisé en segments qui se trouvent dans d'autres lignes. L'ID d'instruction unique et un numéro de séquence garantissent que les segments sont concaténés correctement.

L'application de surveillance de requêtes peut décharger des instructions SQL statiques dans la colonne STMT de la table de catalogue SYSIBM.SYSPACKSTMT. La table stocke le texte SQL au format BINARY. Si l'application que vous utilisez décharge des instructions SQL statiques dans cette table, vous devez utiliser la fonction HEX() pour convertir les instructions du format BINARY en chaînes hexadécimales. Effectuez la conversion dans la vue que vous définissez pour associer cette colonne avec la table des métriques d'exécution et les informations concernant les intervalles de temps dans lesquels les métriques ont été collectées.
ID d'instruction unique
ID unique à l'instruction ; il est utilisé pour identifier les fragments du texte d'instruction qui se trouvent dans différentes lignes d'une table. (Type de données : SQL CHAR, VARCHAR ou BINARY)
Numéro de séquence d'instruction
Nombre décrivant l'ordre dans lequel un segment d'une instruction doit être concaténé avec les autres segments de cette instruction. (Type de données : SQL INT ou SMALLINT)
Début de l'intervalle
Début de l'intervalle dans lequel les métriques d'exécution ont été collectées. (Type de données : SQL TIMESTAMP)
Fin de l'intervalle
Fin de l'intervalle dans lequel les métriques d'exécution ont été collectées. (Type de données : SQL TIMESTAMP)
Numéro de section
Numéro de la section du module DB2 dans laquelle l'instruction SQL est située. (Type de données : SQL INT ou SMALLINT)
Numéro d'instruction
Numéro de l'instruction dans le module DB2. (Type de données : SQL INT ou SMALLINT)
Nombre d'exécutions
Nombre de fois que l'instruction SQL a été exécutée. (Type de données : SQL INT ou SMALLINT)
Temps UC total
Temps UC nécessaire pour exécuter l'instruction le nombre de fois spécifié pour le comptage d'exécution. (Type de données : SQL FLOAT ou DOUBLE)
Durée totale écoulée
Temps de classe 2 nécessaire pour exécuter l'instruction le nombre de fois spécifié pour le comptage d'exécution. (Type de données : SQL FLOAT ou DOUBLE)
Nombre de requêtes getpages
Nombre de requêtes getpage qui ont été lancées. (Type de données : SQL INT ou SMALLINT)
ID de métrique unique
ID unique aux métriques d'exécution collectées pour une instruction SQL ; il permet de joindre la table des métriques d'exécution à celle qui répertorie les objets référencés par les instructions SQL du référentiel. (Type de données : SQL CHAR, VARCHAR ou BINARY)

Vous pouvez également spécifier les colonnes qui contiennent les informations concernant les objets de base de données référencés par l'instruction SQL si une table contient ces informations.

Qualificatif d'objet dépendant
Qualificatif ou schéma de l'objet référencé. (Type de données : SQL CHAR ou VARCHAR)
Nom de l'objet dépendant
Nom de l'objet référencé. (Type de données : SQL CHAR ou VARCHAR)
Type d'objet dépendant
Type de l'objet référencé. (Type de données : SQL CHAR ou VARCHAR)
Nom de base de données
Nom de la base de données dans laquelle l'objet référencé est stocké. (Type de données : SQL CHAR ou VARCHAR)
Nom de l'espace de table
Nom de l'espace table dans lequel l'objet référencé est stocké. (Type de données : SQL CHAR ou VARCHAR)
ID de métrique unique
ID unique aux métriques d'exécution collectées pour une instruction SQL ; il permet de joindre la table des métriques d'exécution à celle qui répertorie les objets référencés par les instructions SQL du référentiel. (Type de données : SQL CHAR, VARCHAR ou BINARY)

Exemple de création d'une charge de travail de requête depuis des instructions SQL dans les données déchargées dans les tables DB2 for z/OS par une application de surveillance des requêtes

Supposez que vous utilisez DB2 Query Monitor for z/OS et déchargez des données depuis des fichiers VSAM dans des tables DB2 for z/OS. Vous voulez ensuite interroger ces tables pour rechercher des informations sur les performances d'instructions SQL dans différentes applications de base de données. Si la performance des instructions SQL est inférieure à un certain seuil, votre objectif est de les optimiser.

Pour capturer et optimiser des instructions SQL depuis ce référentiel de données, vous devez décharger des métriques d'exécution, du texte SQL et des informations sur les intervalles de temps.

Vous pouvez filtrer des valeurs dans ces données, pour que l'assistant Flux de travaux affiche uniquement le sous-ensemble d'instructions SQL qui répond à vos critères de filtrage. Cette fonctionnalité facilite la recherche d'instructions SQL qui requièrent une optimisation.

Vous devez décharger des données dans les trois tables suivantes :

CQMnnINTERVALS
Cette table définit les heures de début et de fin de chaque intervalle.
CQMnnSUMM_METRICS
Cette table contient les métriques d'exécution collectées par DB2 Query Monitor for z/OS pour chaque instruction SQL.
CQMnnSUMM_TEXT
Cette table contient le texte des instructions SQL.
Remarque : Votre application de surveillance de requêtes peut décharger le texte d'instructions SQL statiques dans la colonne STMT de la table de catalogue SYSIBM.SYSPACKSTMT.

Avant d'utiliser l'assistant Flux de travaux pour capturer les instructions SQL, vous devez créer une vue qui joint ces trois tables. Exemple :

CREATE VIEW QM_STMT_VIEW 
  (DB2_SUBSYSTEM, PLAN, COLLECTION, PROGRAM,
   CONSISTENCY_TOKEN, AUTHID, METRICS_TOKEN, TEXT_TOKEN, SQLTEXT, SEQNO,
   INTERVAL_START, INTERVAL_END, SECTION, STMT, SQL_CALLS, DB2_CPU,
   DB2_ELAP, GETPAGES) 
AS
SELECT A.DB2_SUBSYSTEM, A.PLAN, A.COLLECTION, A.PROGRAM, 
   A.CONSISTENCY_TOKEN, A.AUTHID, A.METRICS_TOKEN, A.TEXT_TOKEN, 
   B.SQLTEXT, 0, A.INTERVAL_START, CURRENT TIMESTAMP AS INTERVAL_END_TS, 
   A.SECTION, A.STMT, A.SQL_CALLS, A.DB2_CPU, A.DB2_ELAPSED, A.GETPAGES
FROM QMTOOLS.CQM23_SUMM_METRICS A,  
     QMTOOLS.CQM23_SUMM_TEXT B
WHERE 
   A.TEXT_TOKEN = B.TEXT_TOKEN
   AND A.SMFID = B.SMFID
   AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM    
   AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER
   AND A.INTERVAL_START = B.INTERVAL_START  
   AND A.INTERVAL_NUMBER IN (       
      SELECT DISTINCT A.INTERVAL_NUMBER
      FROM QMTOOLS.CQM23_INTERVALS A,           
           QMTOOLS.CQM23_SUMM_METRICS B        
      WHERE A.SMFID = B.SMFID
         AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM           
         AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER               
         AND A.INTERVAL_START = B.INTERVAL_START);

Si votre application de surveillance de requêtes décharge le texte des instructions SQL statiques dans la colonne STMT de la table de catalogue SYSIBM.SYSPACKSTMT, la vue doit joindre cette colonne avec les tables CQMnnINTERVALS et CQMnnSUMM_METRICS. La vue doit également utiliser la fonction HEX() pour convertir le texte de chaque instruction du format BINARY en une chaîne hexadécimale.

Vous pouvez également décharger des données sur les objets de base de données référencés par les instructions SQL. Vous devez alors décharger ces données dans la table SUMM_OBJECTS.

Une fois vos données déchargées et votre vue créée, effectuez les étapes répertoriées dans Exemple de création d'une charge de travail de requête à pour un référentiel SQL défini par l'utilisateur.


Commentaires