Sie können Abfrageworkloads aus SQL-Anweisungen erstellen, die sich in Daten befinden, die durch Nicht-IBM Abfrageüberwachungsanwendungen in DB2 for z/OS-Tabellen ausgelagert wurden. Hierzu müssen Sie Datenkategorien Spalten in den DB2 for z/OS-Tabellen zuordnen, die die ausgelagerten Daten enthalten. Dieses Thema zeigt auch ein Beispiel der Anforderungen für das Erfassen von SQL-Anweisungen von solchen Daten.
Spalten in den DB2-Tabellen müssen die folgenden Informationen zu den SQL-Anweisungen, ihren Laufzeitmesswerten und den Zeitintervallen der Anweisungsausführungen enthalten.
- DB2-Subsystem
- DB2-Subsystem, in dem Laufzeitmetriken und SQL-Anweisungen erfasst wurden. (Datentyp: SQL CHAR oder VARCHAR)
- Planname
- Name des DB2-Plans. (Datentyp: SQL CHAR oder VARCHAR)
- Objektgruppe
- ID der DB2-Plan- oder Paketobjektgruppe. (Datentyp: SQL CHAR oder VARCHAR)
- Paketname
- Name des DB2-Pakets. (Datentyp: SQL CHAR oder VARCHAR)
- Paketkonsistenztoken
- Konsistenztoken für das DBRM- oder DB2-Paket. (Datentyp: SQL CHAR oder BINARY)
- Primäre Berechtigungs-ID
- Primäre Berechtigungs-ID, die verwendet wurde, um die Anweisung auszuführen. (Datentyp: SQL CHAR oder VARCHAR)
- Anweisungstext
- Text der SQL-Anweisung, entweder die gesamte Anweisung oder ein Fragment davon. (Datentyp: SQL CHAR, VARCHAR oder BINARY)
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.
- Die Anwendung zur Überwachung von Abfragen kann statische SQL-Anweisungen in die Spalte STMT der Katalogtabelle SYSIBM.SYSPACKSTMT auslagern. Die Tabelle speichert den SQL-Text im Binärformat. Wenn die verwendete Anwendung statische SQL-Anweisungen in diese Tabelle auslagert, müssen Sie die HEX()-Funktion zur Konvertierung der Anweisungen aus dem Binärformat in hexadezimale Zeichenfolgen verwenden. Führen Sie die Konvertierung in der Sicht aus, die so definiert wird, dass diese Spalte mit der Tabelle der Laufzeitmessdaten und den Informationen zu den Zeitintervallen, in denen die Messdaten erfasst wurden, kombiniert wird.
- Eindeutige Anweisungs-ID
- Eindeutige ID für die Anweisung. Sie wird verwendet, um Fragmente des Anweisungstexts zu ermitteln, die in unterschiedlichen Zeilen einer Tabelle enthalten sind. (Datentyp: SQL CHAR, VARCHAR oder BINARY)
- Anweisungsfolgenummer
- Nummer, die die Reihenfolge beschreibt, in der ein Segment einer Anweisung mit den anderen Segmenten dieser Anweisung verknüpft werden soll. (Datentyp: SQL INT oder SMALLINT)
- Startintervall
- Start des Intervalls, in dem die Laufzeitmesswerte erfasst wurden. (Datentyp: SQL TIMESTAMP)
- Endintervall
- Ende des Intervalls, in dem die Laufzeitmesswerte erfasst wurden. (Datentyp: SQL TIMESTAMP)
- Abschnittsnummer
- Nummer des Abschnitts im DB2-Paket, in dem die SQL-Anweisung enthalten ist. (Datentyp: SQL INT oder SMALLINT)
- Anweisungsnummer
- Nummer der Anweisung im DB2-Paket. (Datentyp: SQL INT oder SMALLINT)
- Ausführungszähler
- Häufigkeit, mit der die SQL-Anweisung ausgeführt wurde. (Datentyp: SQL INT oder SMALLINT)
- CPU-Gesamtzeit
- CPU-Zeit für das Ausführen der Anweisung in der durch den Ausführungszähler angegebenen Häufigkeit. (Datentyp: SQL FLOAT oder DOUBLE)
- Insgesamt abgelaufene Zeit
- Menge der Klasse 2-Zeit für das Ausführen der Anweisung in der durch den Ausführungszähler angegebenen Häufigkeit. (Datentyp: SQL FLOAT oder DOUBLE)
- Anzahl Seitenabrufe
- Die Anzahl der ausgegebenen getpage-Anforderungen. (Datentyp: SQL INT oder SMALLINT)
- Eindeutige Messdaten-ID
- Eindeutige ID für die Laufzeitmessdaten, die für eine SQL-Anweisung gesammelt wurden. Sie wird verwendet, um die Tabelle mit den Laufzeitmessdaten mit der Tabelle zu verknüpfen, in der die Objekte aufgelistet sind, auf die die SQL-Anweisungen im Repository verweisen. (Datentyp: SQL CHAR, VARCHAR oder BINARY)
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.
- Abhängiges Objektqualifikationsmerkmal
- Qualifikationsmerkmal oder Schema des Referenzobjekts. (Datentyp: SQL CHAR oder VARCHAR)
- Abhängiger Objektname
- Name des Referenzobjekts. (Datentyp: SQL CHAR oder VARCHAR)
- Abhängiger Objekttyp
- Typ des Referenzobjekts. (Datentyp: SQL CHAR oder VARCHAR)
- Datenbankname
- Name der Datenbank, in der das Referenzobjekt gespeichert ist. (Datentyp: SQL CHAR oder VARCHAR)
- Tabellenbereichsname
- Name des Tabellenbereiche, in dem das Referenzobjekt gespeichert ist. (Datentyp: SQL CHAR oder VARCHAR)
- Eindeutige Messdaten-ID
- Eindeutige ID für die Laufzeitmessdaten, die für eine SQL-Anweisung gesammelt wurden. Sie wird verwendet, um die Tabelle mit den Laufzeitmessdaten mit der Tabelle zu verknüpfen, in der die Objekte aufgelistet sind, auf die die SQL-Anweisungen im Repository verweisen. (Datentyp: SQL CHAR, VARCHAR oder BINARY)
Beispiel für das Erstellen einer Abfrageworkload aus SQL-Anweisungen in Daten, die durch eine Abfrageüberwachungsanwendung in DB2 for z/OS-Tabellen ausgelagert wurden
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.
Sie können Werte in diesen Daten filtern, damit der Workflowassistent nur die Untergruppe der SQL-Anweisungen anzeigt, die Ihre Filterkriterien erfüllen.
Mithilfe dieser Funktionalität können Sie einfach SQL-Anweisungen suchen, die optimiert werden müssen.Sie müssen Daten in die folgenden drei Tabellen auslagern:
- CQMnnINTERVALS
- Diese Tabelle definiert die Start- und Endzeiten der einzelnen Intervalle.
- CQMnnSUMM_METRICS
- Diese Tabelle enthält die Laufzeitmesswerte, die DB2 Query Monitor for z/OS für jede SQL-Anweisung erfasst.
- CQMnnSUMM_TEXT
- Diese Tabelle enthält den Text der SQL-Anweisungen.
Anmerkung: Ihre Abfrageüberwachungsanwendung kann den Text von statischen SQL-Anweisungen in die Spalte STMT der Katalogtabelle SYSIBM.SYSPACKSTMT 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.
Führen Sie nach der Auslagerung Ihrer Daten und Erstellung Ihrer Sicht die in Beispiel für die Erstellung einer Abfrageworkload aus einem benutzerdefinierten SQL-Repository aufgelisteten Schritte aus.