Spalten in den DB2-Tabellen müssen die folgenden Informationen zu den SQL-Anweisungen, ihren Laufzeitmesswerten und den Zeitintervallen der Anweisungsausführungen enthalten.
Dieser Text kann sich auf mehrere Segmente und Zeilen verteilen. Die eindeutige Anweisungs-ID und die Folgenummer sorgen dafür, dass die Segmente ordnungsgemäß verkettet werden.
Sie können auch angeben, welche Spalten Informationen zu den Datenbankobjekten enthalten, auf die die SQL-Anweisungen verweisen, wenn eine Tabelle diese Informationen enthält.
Dieses Beispiel verwendet IBM® DB2 Query Monitor for z/OS. Dieses Programm kann so wie Nicht-IBM Abfrageüberwachungsanwendungen Daten in DB2 for z/OS-Tabellen auslagern. Verwenden Sie für beste Ergebnisse jedoch die Seite SQL aus DB2 Query Monitor for z/OS erfassen im Abschnitt Erfassen des Workflowassistenten, um SQL-Anweisungen aus DB2 Query Monitor for z/OS zu erfassen.
Angenommen, Sie verwenden DB2 Query Monitor for z/OS und lagern Daten aus VSAM-Dateien in DB2 for z/OS-Tabellen aus. Anschließend wollen Sie diese Tabellen abfragen, um Informationen zur Leistung von SQL-Anweisungen in verschiedenen Datenbankanwendungen zu ermitteln. Wenn SQL-Anweisungen einen Leistungsgrenzwert nicht erreichen, besteht Ihr Ziel darin, diese Anweisungen zu optimieren.
Sie müssen Laufzeitmesswerte, SQL-Text und Informationen zu Zeitintervallen auslagern, um SQL-Anweisungen aus diesem Datenrepository zu erfassen und zu optimieren.
Diese Daten sind für die Abfrageoptimierung erforderlich und bieten die folgenden Vorteile:
Sie müssen Daten in die folgenden drei Tabellen auslagern:
Sie müssen eine Sicht erstellen, die diese drei Tabellen verknüpft, bevor Sie über den Workflowassistenten SQL-Anweisungen erfassen. Es folgt ein Beispiel:
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);
Wenn Ihre Abfrageüberwachungsanwendung den Text von statischen SQL-Anweisungen in die Spalte STMT der Katalogtabelle SYSIBM.SYSPACKSTMT auslagert, muss die Sicht diese Spalte mit den Tabellen CQMnnINTERVALS und CQMnnSUMM_METRICS verknüpfen. Die Sicht muss außerdem mit der Funktion HEX() den Text jeder Anweisung aus dem Binärformat in eine hexadezimale Zeichenfolge konvertieren.
Sie können auch Daten zu den Datenbankobjekten auslagern, auf die die SQL-Anweisungen verweisen. Sie müssen diese Daten in die Tabelle SUMM_OBJECTS auslagern.