Beispiel für die Erstellung einer Abfrageworkload aus einem benutzerdefinierten SQL-Repository

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 für die Ausführung der Anweisung. (Datentyp: SQL CHAR oder VARCHAR)
Anweisungstext
Text der SQL-Anweisung, entweder der gesamten Anweisung oder eines Teils 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 zur Kennzeichnung der Reihenfolge, in der ein Segment einer Anweisung mit anderen Segmenten derselben Anweisung verkettet werden soll. (Datentyp: SQL INT oder SMALLINT)
Startintervall
Start des Intervalls für die Erfassung der Laufzeitmessdaten. (Datentyp: SQL TIMESTAMP)
Endintervall
Ende des Intervalls für die Erfassung der Laufzeitmessdaten. (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
Anzahl der Ausführungen der SQL-Anweisung. (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
Anzahl der ausgegebenen getpage-Anforderungen. (Datentyp: SQL INT oder SMALLINT)
Eindeutige Messdaten-ID
Eindeutige ID für die Laufzeitmesswerte, die für eine SQL-Anweisung erfasst wurden. Sie wird verwendet, um die Tabelle der Laufzeitmesswerte mit der Tabelle zu verknüpfen, die Objekte auflistet, 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 wird. (Datentyp: SQL CHAR oder VARCHAR)
Tabellenbereichsname
Name des Tabellenbereichs, in dem das Referenzobjekt gespeichert wird. (Datentyp: SQL CHAR oder VARCHAR)
Eindeutige Messdaten-ID
Eindeutige ID für die Laufzeitmesswerte, die für eine SQL-Anweisung erfasst wurden. Sie wird verwendet, um die Tabelle der Laufzeitmesswerte mit der Tabelle zu verknüpfen, die Objekte auflistet, 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.


Feedback