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.
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.
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.
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 :
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.