Aprimorando o Desempenho Após a Implementação de Artefatos dos Serviços de Bancos de Dados

Após a implementação dos artefatos de serviços de dados, diversos índices são criados, o que faz com que o DB2 escolha planos de acesso ruins. Você deve desempenhar algumas etapas imediatamente após a implementação e antes de iniciar qualquer servidor de componente de serviços de dados para garantir que bons planos de acesso sejam criados.

Um sintoma de planos ruins de acesso são interrupções de dados que aparecem nos bancos de dados de Tempo de Execução e de Histórico em virtude de consultas muito longas que desempenham deveres de componentes Target Life Cycle. Normalmente, essa ocorrência também está associada a um aumento na alocação da CPU por processos do DB2.

Conclua as seguintes etapas para solucionar esse problema:

Para o Banco de Dados de Tempo de Execução

  1. Conecte-se ao banco de dados de Tempo de Execução utilizando uma ferramenta de consulta de sua escolha.
    1. Caso esteja executando localmente como usuário de implementação

      db2 connect to <Banco_de_Dados_de_Tempo_de_Execução>

    2. Caso esteja executando remotamente

      db2 connect to <Banco_de_Dados_de_Tempo_de_Execução> user <Nome_do_Usuário>

  2. Crie um arquivo denominado createCCDindexesDrops.sql contendo o seguinte texto:

    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. Execute a instrução SQL que acaba de ser criada e redirecione o arquivo de saída para um arquivo.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Examine o arquivo. Você deve visualizar instruções como:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Execute o arquivo gerado da seguinte maneira:

    db2 -tvf dropRuntimeCCDIndexes

  6. Crie um arquivo denominado createrebindDSRuntimeStoredProcedures.sql e inclua o seguinte conteúdo:

    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. Execute o arquivo.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSRuntimeStoredProcedures.sql

  8. Examine o arquivo gerado. Você deve visualizar o seguinte:

    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. Execute o arquivo gerado para ligar novamente os procedimentos de DS uma vez que os índices sejam removidos.

    db2 -tvf rebindDSRuntimeStoredProcedures.sql

Para o Banco de Dados de Histórico

  1. Conecte-se ao banco de dados de Tempo de Execução utilizando uma ferramenta de consulta de sua escolha.
    1. Caso esteja executando localmente como usuário de implementação

      db2 connect to <Banco_de_Dados_de_Histórico>

    2. Caso esteja executando remotamente

      db2 connect to <Banco_de_Dados_de_Histórico> user <Nome_do_Usuário>

  2. Crie um arquivo denominado createCCDindexesDrops.sql contendo o seguinte texto. Você pode reutilizar o arquivo criado para o banco de dados de Tempo de Execução:

    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. Execute a instrução SQL que acaba de ser criada e redirecione o arquivo de saída para um arquivo.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Examine o arquivo. Você deve visualizar instruções como:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Execute o arquivo gerado da seguinte maneira:

    db2 -tvf dropRuntimeCCDIndexes

  6. Crie um arquivo denominado createrebindDSRuntimeStoredProcedures.sql e inclua o seguinte conteúdo:

    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. Execute o arquivo.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSHistoryStoredProcedures.sql

  8. Examine o arquivo gerado. Você deve visualizar o seguinte:

    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. Execute o arquivo gerado para ligar novamente os procedimentos de DS uma vez que os índices sejam removidos.

    db2 -tvf rebindDSHistoryStoredProcedures.sql


Direitos Autorais IBM Corporation 2005. Todos os Direitos Reservados.