데이터베이스 서비스 아티팩트 배치 후 성능 개선

데이터 서비스 아티팩트를 배치한 후에 DB2®로 하여금 비효율적인 액세스 계획을 선택하게 만드는 몇 개의 색인이 작성됩니다. 배치 후 즉시, 데이터 서비스 컴포넌트 서버를 시작하기 전에 몇 가지 단계를 수행하여 효율적인 액세스 계획이 작성되도록 해야 합니다.

비효율적인 액세스 계획으로 인한 증상 하나는 Target Life Cycle 컴포넌트 역할을 수행하는 아주 긴 조회로 인해 데이터가 런타임 및 히스토리 데이터베이스에 더 이상 표시되지 않는다는 것입니다. 일반적으로 이러한 현상은 DB2 프로세스에 의한 CPU 할당 증가와도 연관이 있습니다.

다음 단계를 완료하여 이 문제점을 해결하십시오.

런타임 데이터베이스의 경우

  1. 원하는 조회 도구를 사용하여 런타임 데이터베이스에 연결하십시오.
    1. 배치 사용자를 통해 로컬로 실행하는 경우

      db2 connect to <Runtime_Database>

    2. 원격으로 실행하는 경우

      db2 connect to <Runtime_Database> user <User_Name>

  2. 다음 텍스트가 포함된 createCCDindexesDrops.sql 파일을 작성하십시오.

    SELECT 'DROP INDEX ' || CREATOR || '.' || NAME || ';'

    FROM

    SYSIBM.SYSINDEXES, WBIRMADM.RMMETADATA RM

    WHERE

    REPLACE(LTRIM(TBCREATOR) || '.' || LTRIM(TBNAME),' ','') = RM.TGT_RM_APP_STG_TAB_NAME

    AND CREATOR='APP'

    AND NAME LIKE 'CCD%'

    ;

  3. 방금 작성한 SQL 문을 실행하고 파일에 출력을 재지정하십시오.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. 파일을 조사하십시오. 다음과 같은 명령문이 있어야 합니다.

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. 생성된 파일을 다음과 같이 실행하십시오.

    db2 -tvf dropRuntimeCCDIndexes

  6. createrebindDSRuntimeStoredProcedures.sql 파일을 작성하고 다음 컨텐츠를 추가하십시오.

    SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_SPETL_NAME || ''', ''ANY'');'

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    Service_Name='State to Runtime';

    SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_APP_PRUNE_SP_NAME || ''', ''ANY'');'

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    Service_Name='State to Runtime';

  7. 파일을 실행하십시오.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSRuntimeStoredProcedures.sql

  8. 생성된 파일을 조사하십시오. 다음과 같은 명령문이 있어야 합니다.

    CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_10', 'ANY');

    CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_14', 'ANY');

    CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_47', 'ANY');

  9. 생성된 파일을 실행하여 색인이 제거되면 DS 스토어드 프로시저를 리바인드하십시오.

    db2 -tvf rebindDSRuntimeStoredProcedures.sql

히스토리 데이터베이스의 경우

  1. 원하는 조회 도구를 사용하여 런타임 데이터베이스에 연결하십시오.
    1. 배치 사용자를 통해 로컬로 실행하는 경우

      db2 connect to <Historical_Database>

    2. 원격으로 실행하는 경우

      db2 connect to <Historical_Database> user <User_Name>

  2. 다음 텍스트가 포함된 createCCDindexesDrops.sql 파일을 작성하십시오. 런타임 데이터베이스용으로 작성한 파일을 다시 사용할 수 있습니다.

    SELECT 'DROP INDEX ' || CREATOR || '.' || NAME || ';'

    FROM

    SYSIBM.SYSINDEXES, WBIRMADM.RMMETADATA RM

    WHERE

    REPLACE(LTRIM(TBCREATOR) || '.' || LTRIM(TBNAME),' ','') = RM.TGT_RM_APP_STG_TAB_NAME

    AND CREATOR='APP'

    AND NAME LIKE 'CCD%'

    ;

  3. 방금 작성한 SQL 문을 실행하고 파일에 출력을 재지정하십시오.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. 파일을 조사하십시오. 다음과 같은 명령문이 있어야 합니다.

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. 생성된 파일을 다음과 같이 실행하십시오.

    db2 -tvf dropRuntimeCCDIndexes

  6. createrebindDSRuntimeStoredProcedures.sql 파일을 작성하고 다음 컨텐츠를 추가하십시오.

    SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_SPETL_NAME || ''', ''ANY'');'

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    Service_Name='Runtime to Historical';

    SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_APP_PRUNE_SP_NAME || ''', ''ANY'');'

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    Service_Name='Runtime to Historical';

  7. 파일을 실행하십시오.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSHistoryStoredProcedures.sql

  8. 생성된 파일을 조사하십시오. 다음과 같은 명령문이 있어야 합니다.

    CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_10', 'ANY');

    CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_14', 'ANY');

    CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_47', 'ANY');

  9. 생성된 파일을 실행하여 색인이 제거되면 DS 스토어드 프로시저를 리바인드하십시오.

    db2 -tvf rebindDSHistoryStoredProcedures.sql


Copyright IBM Corporation 2005, 2006. All Rights Reserved.