Beispiel für die Auslagerung von SQL-Anweisungen aus einem benutzerdefinierten SQL-Repository

Sie können SQL-Anweisungen aus Daten erfassen, 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.
Im ersten Abschnitt werden diese Datenkategorien und die für sie zu verwendenden Datentypen angezeigt. Im zweiten Abschnitt wird ein Beispiel der Anforderungen für das Erfassen von SQL-Anweisungen von solchen Daten angezeigt.

DB2-Spalten zuzuordnende Datenkategorien

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 die Erfassung von SQL-Anweisungen aus DB2 for z/OS-Tabellen, die durch eine Abfrageüberwachungsanwendung erstellt wurden

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:

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.


Feedback