DB2 테이블의 컬럼은 SQL문에 대한 다음 정보, 해당 런타임 메트릭 및 명령문이 실행된 동안의 시간 간격을 포함해야 합니다.
이 텍스트는 다른 행에 있는 세그먼트로 분리될 수 있습니다. 고유 명령문 ID와 시퀀스 번호를 통해 세그먼트가 올바르게 병합되었는지 확인할 수 있습니다.
또한 SQL문이 참조하는 데이터베이스 오브젝트에 대한 정보가 포함된 컬럼을 지정할 수 있습니다(테이블에 이 정보가 포함된 경우).
이 예제에서는 비IBM 쿼리 모니터링 애플리케이션과 마찬가지로 z/OS용 DB2 테이블로 데이터를 오프로드할 수 있는 z/OS용 IBM® DB2 Query Monitor를 사용합니다. 그러나 최상의 결과를 얻으려면 워크플로우 지원 프로그램의 캡처 섹션에 있는 z/OS용 DB2 Query Monitor에서 SQL 캡처 페이지를 사용하여 z/OS용 DB2 Query Monitor에서 SQL문을 캡처하십시오.
z/OS용 DB2 Query Monitor를 사용하고 VSAM 파일에서 z/OS용 DB2 테이블로 데이터를 오프로드한다고 가정하십시오. 그런 다음 이러한 테이블을 쿼리하여 다양한 데이터베이스 애플리케이션에서 SQL문의 성능에 대한 정보를 찾으려고 합니다. SQL문이 성능 임계값 밑으로 내려갈 경우, 목표는 해당 명령문을 조정하는 것입니다.
이 데이터 저장소에서 SQL문을 캡처하고 조정하려면 런타임 메트릭, SQL 텍스트 및 시간 간격에 대한 정보를 오프로드해야 합니다.
이 데이터는 쿼리 튜닝에 필요하며 다음과 같은 이점을 제공합니다.
워크플로우 지원 프로그램을 사용하여 SQL문을 캡처하기 전에 이 세 개의 테이블을 조인하는 뷰를 작성해야 합니다. 예제는 다음과 같습니다.
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);
쿼리 모니터링 애플리케이션이 SYSIBM.SYSPACKSTMT 카탈로그 테이블의 STMT 컬럼으로 정적 SQL문 텍스트를 오프로드하는 경우, 뷰는 이 컬럼을 CQMnnINTERVALS 및 CQMnnSUMM_METRICS 테이블과 조인해야 합니다. 또한 이 뷰는 HEX() 함수를 사용하여 각 명령문의 텍스트를 BINARY 형식에서 16진 문자열로 변환해야 합니다.
SQL문이 참조하는 데이터베이스 오브젝트에 대한 데이터도 오프로드할 수 있습니다. 해당 데이터를 SUMM_OBJECTS 테이블로 오프로드해야 합니다.