Повышение производительности после развертывания артефактов служб базы данных

После развертывания артефактов служб базы данных создаются несколько индексов, из-за которых DB2 выбирает медленный план доступа. Необходимо выполнить некоторые действия сразу после развертывания и перед запуском серверов компонентов служб данных для обеспечения создания быстрого плана доступа.

Одним из признаков того, что выбран медленный план доступа является остановка данных в базах данных Хронологии и Выполнения, из-за слишком длинных запросов, выполняющих обязанности компонента жизненного цикла приемника. Обычно это также связано с увеличением выделения процессорной мощности для процессов DB2.

Для устранения данной неполадки выполните следующие действия:

Для базы данных Рабочая

  1. Подключитесь к базе данных Рабочая с помощью любой утилиты запросов.
    1. При локальном выполнении с пользователем развертывания:

      db2 connect to <База_данных_Среда_выполнения>

    2. При удаленном выполнении:

      db2 connect to <База_данных_Среда_выполнения> user <Имя_пользователя>

  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 <База_данных_Хронология>

    2. При удаленном выполнении:

      db2 connect to <База_данных_Хронология> user <Имя_пользователя>

  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. Все права защищены.