改善部署資料庫服務成品後的效能

在部署資料服務成品之後,會建立數個索引,因而導致 DB2® 選擇不佳的存取計劃。您必須在部署後、啟動任何資料服務元件伺服器前,先立即執行一些步驟以確保建立良好的存取計劃。

因為執行「目標生命週期」元件工作會有相當長的查詢時間,存取計劃不佳的症狀之一便是資料不再出現於「執行時期」資料庫與「歷程」資料庫中。此情形通常也與 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.