Exemple de capture d'instructions SQL pour un référentiel SQL défini par l'utilisateur

Vous pouvez capturer des instructions SQL depuis les données déchargées vers 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. La première section montre ces catégories de données et les types de données pour les utiliser. La deuxième section montre un exemple des exigences de capture d'instructions SQL depuis de telles données.

Catégories de données à mapper sur les colonnes DB2

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 package DB2 (type de données : SQL CHAR ou VARCHAR)
Nom du package
Nom du package DB2 (type de données : SQL CHAR ou VARCHAR)
Marque de cohérence du package
Marque de cohérence pour le module d'interrogation de base de données ou le package DB2 (type de données : SQL CHAR ou BINARY)
ID utilisateur primaire
ID utilisateur primaire utilisé pour exécuter l'instruction (type de données : SQL CHAR ou VARCHAR)
Texte de l'instruction
Texte de l'instruction SQL représentant l'instruction entière ou une partie de celle-ci (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 de la table (SQL CHAR, VARCHAR ou BINARY)
Numéro de séquence d'instruction
Numéro qui décrit 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 package DB2, dans laquelle se trouve l'instruction SQL (type de données : SQL INT ou SMALLINT)
Numéro d'instruction
Numéro de l'instruction dans le package DB2 (type de données : SQL INT ou SMALLINT)
Nombre d'exécutions
Nombre d'exécutions de l'instruction SQL (type de données : SQL INT ou SMALLINT)
Temps UC total
Temps UC nécessaire pour exécuter l'instruction pour le nombre d'occurrences spécifié dans le compte 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 pour le nombre d'occurrences spécifié dans le compte d'exécution (type de données : SQL FLOAT ou DOUBLE)
Nombre de requêtes getpages
Nombre d'émissions de requêtes getpage (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 de 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 mesures 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 capture d'instructions SQL depuis des tables DB2 for z/OS créées par une application de surveillance des requêtes

Cet exemple utilise IBM® DB2 Query Monitor for z/OS, qui peut décharger des données dans des tables DB2 for z/OS, tout comme les applications de surveillance de requêtes non IBM. Toutefois, pour obtenir de meilleurs résultats, utilisez la page Capturer SQL depuis DB2 Query Monitor for z/OS de la section Capture de l'assistant Flux de travaux pour capturer des instructions SQL depuis DB2 Query Monitor for z/OS.

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.

Ces données sont requises pour l'optimisation des requêtes et fournissent les avantages suivants :

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 Capture d'instructions SQL à partir de référentiels SQL définis par l'utilisateur.


Commentaires