Zwiększanie wydajności po zainstalowaniu artefaktów usług baz danych

Po wdrożeniu artefaktów usług danych zostanie utworzonych kilka indeksów, które powodują wybór słabych planów dostępu produktu DB2. Natychmiast po wdrożeniu, a przed uruchomieniem dowolnego serwera komponentu usług danych należy wykonać kilka kroków zapewniających utworzenie dobrych planów dostępu.

Objawem słabych planów dostępu jest zatrzymanie danych pojawiających się w wykonawczej bazie danych i w bazie danych historycznych z powodu bardzo długich zapytań wykonujących zadania komponentu cyklu życia elementów docelowych. Zwykle ich występowanie jest również związane ze zwiększeniem przydziałów procesów produktu DB2 do procesora.

Aby rozwiązać ten problem, wykonaj następujące kroki:

W przypadku wykonawczej bazy danych

  1. Połącz się z wykonawczą bazą danych za pomocą wybranego narzędzia zapytań.
    1. W przypadku lokalnego działania użytkownika wdrażającego

      db2 connect to <wykonawcza_baza_danych>

    2. W przypadku działania zdalnego

      db2 connect to <wykonawcza_baza_danych> user <nazwa_użytkownika>

  2. Utwórz plik o nazwie createCCDindexesDrops.sql zawierający następujący tekst:

    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. Uruchom nowo utworzoną instrukcję SQL, a następnie przekieruj jej wyjście do pliku.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Sprawdź ten plik. Powinien zawierać instrukcje, takie jak:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Uruchom wygenerowany plik w następujący sposób:

    db2 -tvf dropRuntimeCCDIndexes

  6. Utwórz plik o nazwie createrebindDSRuntimeStoredProcedures.sql, a następnie dodaj następującą treść:

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

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    nazwa_usługi='Z bazy danych stanu do wykonawczej bazy danych';

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

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    nazwa_usługi='Z bazy danych stanu do wykonawczej bazy danych';

  7. Uruchom ten plik.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSRuntimeStoredProcedures.sql

  8. Sprawdź wygenerowany plik. Powinien zawierać następującą treść:

    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. Uruchom wygenerowany plik, aby ponownie powiązać procedury składowane DS po usunięciu indeksów.

    db2 -tvf rebindDSRuntimeStoredProcedures.sql

W przypadku bazy danych historycznych

  1. Połącz się z wykonawczą bazą danych za pomocą wybranego narzędzia zapytań.
    1. W przypadku lokalnego działania użytkownika wdrażającego

      db2 connect to <baza_danych_historycznych>

    2. W przypadku działania zdalnego

      db2 connect to <baza_danych_historycznych> user <nazwa_użytkownika>

  2. Utwórz plik o nazwie createCCDindexesDrops.sql zawierający następujący tekst. Można ponownie użyć pliku utworzonego dla wykonawczej bazy danych:

    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. Uruchom nowo utworzoną instrukcję SQL, a następnie przekieruj jej wyjście do pliku.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Sprawdź ten plik. Powinien zawierać instrukcje, takie jak:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Uruchom wygenerowany plik w następujący sposób:

    db2 -tvf dropRuntimeCCDIndexes

  6. Utwórz plik o nazwie createrebindDSRuntimeStoredProcedures.sql, a następnie dodaj następującą treść:

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

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    nazwa_usługi='Z wykonawczej bazy danych do bazy danych historycznych';

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

    FROM

    WBIRMADM.RMMETADATA

    WHERE

    nazwa_usługi='Z wykonawczej bazy danych do bazy danych historycznych';

  7. Uruchom ten plik.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSHistoryStoredProcedures.sql

  8. Sprawdź wygenerowany plik. Powinien zawierać następującą treść:

    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. Uruchom wygenerowany plik, aby ponownie powiązać procedury składowane DS po usunięciu indeksów.

    db2 -tvf rebindDSHistoryStoredProcedures.sql


Copyright IBM Corporation 2005, 2006. Wszelkie prawa zastrzeżone.