Zlepšování výkonu po implementaci artefaktů služeb databáze

Po implementaci artefaktů datových služeb je vytvořeno několik indexů, které způsobují, že produkt DB2 volí špatné plány přístupu. Musíte provést určité kroky ihned po implementaci a před spuštěním jakýchkoliv serverů komponent datových služeb, abyste zajistili vytváření správných plánů přístupu.

Jeden příznak špatných plánů přístupu spočívá v tom, že se data přestanou zobrazovat v běhové databázi a databázi historie kvůli velmi dlouhým dotazům, které provádějí povinnosti komponent Target Life Cycle. Obvykle je tento výskyt taky spojen s nárůstem přidělení výkonu CPU na straně procesů produktu DB2.

Proveďte následující kroky k vyřešení tohoto problému:

Pro běhovou databázi

  1. Připojte se k běhové databázi pomocí dotazovacího nástroje dle vašeho výběru.
    1. Při lokálním spuštění s uživatelem implementace

      db2 connect to <běhová_databáze>

    2. Při vzdáleném spuštění

      db2 connect to <běhová_databáze> user <jméno_uživatele>

  2. Vytvořte soubor s názvem createCCDindexesDrops.sql obsahující následující text:

    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. Spusťte právě vytvořený příkaz SQL a přesměrujte výstup do souboru.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Prozkoumejte soubor. Měli byste vidět příkazy, jako:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Spusťte vygenerovaný soubor následujícím způsobem:

    db2 -tvf dropRuntimeCCDIndexes

  6. Vytvořte soubor s názvem createrebindDSRuntimeStoredProcedures.sql a přidejte následující obsah:

    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. Spusťte soubor.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSRuntimeStoredProcedures.sql

  8. Prozkoumejte vygenerovaný soubor. Měli byste vidět následující:

    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. Spusťte vygenerovaný soubor pro znovuvytvoření vazby v DS uložených procedur, jakmile budou odebrány indexy.

    db2 -tvf rebindDSRuntimeStoredProcedures.sql

Pro databázi historie

  1. Připojte se k běhové databázi pomocí dotazovacího nástroje dle vašeho výběru.
    1. Při lokálním spuštění s uživatelem implementace

      db2 connect to <databáze_historie>

    2. Při vzdáleném spuštění

      db2 connect to <databáze_historie> user <jméno_uživatele>

  2. Vytvořte soubor s názvem createCCDindexesDrops.sql obsahující následující text. Můžete znovu použít soubor vytvořený pro běhovou databázi:

    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. Spusťte právě vytvořený příkaz SQL a přesměrujte výstup do souboru.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Prozkoumejte soubor. Měli byste vidět příkazy, jako:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Spusťte vygenerovaný soubor následujícím způsobem:

    db2 -tvf dropRuntimeCCDIndexes

  6. Vytvořte soubor s názvem createrebindDSRuntimeStoredProcedures.sql a přidejte následující obsah:

    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. Spusťte soubor.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSHistoryStoredProcedures.sql

  8. Prozkoumejte vygenerovaný soubor. Měli byste vidět následující:

    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. Spusťte vygenerovaný soubor pro znovuvytvoření vazby v DS uložených procedur, jakmile budou odebrány indexy.

    db2 -tvf rebindDSHistoryStoredProcedures.sql


Copyright IBM Corporation 2005, 2006. Všechna práva vyhrazena.