Mejora del rendimiento tras desplegar artefactos de servicios de base de datos

Después del despliegue de artefactos de servicios de datos, se crean varios índices que provocan que DB2 no seleccione buenos planes de acceso. Debe llevar a cabo algunos pasos inmediatamente después del despliegue y antes de iniciar cualquier servidor de componente de servicios de datos para garantizar que se creen buenos planes de acceso.

Un síntoma de que un plan de acceso no es bueno es que los datos dejan de aparecer en las bases de datos histórica y de tiempo de ejecución debido a consultas muy largas realizadas por tareas del componente de Ciclo de vida destino. Normalmente, esta aparición también se asocia con un aumento en la asignación de CPU por parte de procesos de DB2.

Siga los pasos siguientes para resolver este problema:

Para la base de datos de tiempo de ejecución

  1. Conéctese a la base de datos de tiempo de ejecución mediante la herramienta de consulta que prefiera.
    1. Si se ejecuta localmente con el usuario de despliegue

      db2 connect to <BD_Runtime>

    2. Si se ejecuta remotamente

      db2 connect to <BD_Runtime> user <nombre_usuario>

  2. Cree un archivo llamado createCCDindexesDrops.sql que contenga el texto siguiente:

    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. Ejecute la sentencia SQL que se acaba de crear y redirija la salida a un archivo.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Examine el archivo. Debería ver sentencias como:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Ejecute el archivo generado como se indica a continuación:

    db2 -tvf dropRuntimeCCDIndexes

  6. Cree un archivo llamado createrebindDSRuntimeStoredProcedures.sql y añada el contenido siguiente:

    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. Ejecute el archivo.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSRuntimeStoredProcedures.sql

  8. Examine el archivo generado. Debería ver lo siguiente:

    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. Ejecute el archivo generado para volver a enlazar los procedimientos almacenados de servicios de datos después de eliminar los índices.

    db2 -tvf rebindDSRuntimeStoredProcedures.sql

Para la base de datos histórica

  1. Conéctese a la base de datos de tiempo de ejecución mediante la herramienta de consulta que prefiera.
    1. Si se ejecuta localmente con el usuario de despliegue

      db2 connect to <BD_Historical>

    2. Si se ejecuta remotamente

      db2 connect to <BD_Historical> user <nombre_usuario>

  2. Cree un archivo llamado createCCDindexesDrops.sql que contenga el texto siguiente. Puede volver a utilizar el archivo creado para la base de datos de tiempo de ejecución:

    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. Ejecute la sentencia SQL que se acaba de crear y redirija la salida a un archivo.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Examine el archivo. Debería ver sentencias como:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Ejecute el archivo generado como se indica a continuación:

    db2 -tvf dropRuntimeCCDIndexes

  6. Cree un archivo llamado createrebindDSRuntimeStoredProcedures.sql y añada el contenido siguiente:

    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. Ejecute el archivo.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSHistoryStoredProcedures.sql

  8. Examine el archivo generado. Debería ver lo siguiente:

    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. Ejecute el archivo generado para volver a enlazar los procedimientos almacenados de servicios de datos después de eliminar los índices.

    db2 -tvf rebindDSHistoryStoredProcedures.sql


Copyright IBM Corporation 2005, 2006. Reservados todos los derechos.