SlideShare a Scribd company logo
1 of 41
Download to read offline
Projeto de Otimização de Performance e
          Redução de Custos

           Sistema On-line

        Empresa de Serviços
PROJETO DE OTIMIZAÇÃO



Objetivo do Projeto


Comprovar a viabilidade de ganhos de
performance e redução de custos em
ambiente Mainframe de um novo sistema
de Call Center.
PROJETO DE OTIMIZAÇÃO



Cenário


Robô simulando carga de 100 usuários
com alguns cenários similares ao
ambiente de Produção.
PROJETO DE OTIMIZAÇÃO

Premissas
• Focar sub-rotina XXX0024

• Definir e utilizar processo não-intrusivo

• Aplicar processo de otimização

• Escolher pontos a otimizar

• Efetuar as alterações propostas

• Efetuar medições prévias e posteriores

• Apurar os ganhos
POC QC ADVISOR

Desafios

  • Redução do time to market

  • Volume crescente de implantações

  • Manter desempenho adequado

  • Manter disponibilidade

  • Otimização rápida
POC QC ADVISOR

Cenário em Produção



  • Ambiente Mainframe Z/OS

  • Aplicações CICS, Cobol, DB2

  • Ambiente de Produção de 5000 MIPs
PROJETO DE OTIMIZAÇÃO

Tópicos do Projeto


• Escopo e processo utilizado

• Descrição Macro

• Dados Obtidos

• Resultados

• Premissas para cálculo da economia de MIPS

• ROI
Escopo e processo utilizado

• Focar a sub-rotina XXX0024: a mais utilizada no on-
  line

• 62% do uso de CPU nos testes de stress do novo
  sistema

• Mais de 80 comandos SQL de difícil avaliação manual

• Provar que o processo é viável para todo workload
  em DB2
Processo Escolhido

Geração de traces de performance do DB2
tendo como metas:
    evitar impacto de desempenho (amostragem)
    automação na análise dos traces
    detectar comandos de maior consumo
    extensa gama de informações
    propor alterações de índices (processo automático)
    propor otimizações de SQL de alto consumo
Descrição Macro

•   Coletar amostras de traces de performance do DB2
•   Aplicar processo automático de análise dos traces
•   Recomendar automaticamente índices e alterações
•   Teste de stress da situação anterior
•   Efetuar alterações, teste de stress e medições na
    situação nova
PROJETO DE OTIMIZAÇÃO

Dados Obtidos
Tabelas mais acessadas e analisadas

XXXXXRMT
XXXXXCMT
XXXXXAMT
XXXXXOMT

Comandos de maior consumo (99%)

Stmt:       5638   XXXXXRMT       CUR_XXXXXRDV_SAD
Stmt:       2835   XXXXXOMT       CUR_CLI_AMBOS
Stmt:       6869   XXXXXCMT       CUR_IDPC_SAD
Stmt:       7642   XXXXXCMT       (select sem cursor)
Stmt:       2776   XXXXXADV       (select sem cursor)
PROJETO DE OTIMIZAÇÃO

Dados Obtidos
Solução – Tabelas (recomendação automática)

 XXXXXRMT - ALTERAÇÃO DE 1 (UM) ÍNDICE
 XXXXXCMT - CRIAÇÃO DE 1 (UM) ÍNDICE
 XXXXXAMT - CRIAÇÃO DE 1 (UM) ÍNDICE
 XXXXXOMT - CRIAÇÃO / DELEÇÃO DE ÍNDICES

Solução para otimizar comandos
                                              Ganho Previsto

 Stmt:       5638    (índice)                 < 80%
 Stmt:       2835    (índice/alterar SQL)     < 10 a 50%
 Stmt:       6869    (índice)                 < 75%
 Stmt:       7642    (alterar SQL)            < 60%
 Stmt:       2776    (índice / alterar SQL)   < 80%
PROJETO DE OTIMIZAÇÃO

Resultados
OBJETO MENSURADO          ANTES    DEPOIS    %REDUÇÃO


TEMPO DE RESPOSTA MÉDIO    0,231     0,103        55%
GRUPO DE TRN PE**          0,383      0,09        76%
GRUPO DE TRN VI**          0,187     0,072        62%

CPU TOTAL PQD0024          1224         3         99%

    Resultados permitiram revisão do
 capacity previsto para o sistema em 30%
Premissas para cálculo da economia de MIPS

  •    O processador do ambiente é de 215 MIPS
  •    O perfil da carga de transações do stress é similar ao da Produção
  •    O teste de stress foi executado em 51 minutos. (13h53 às 14h44)
  •    A CPU disponível para um processador seria de 51 minutos, ou
       3.060 segundos
  •    CPU economizada após alterações: 1.221 segundos
  •    Economia em percentual: 39,9% (1221 segundos de 3.060
       segundos)
  •    Economia em MIPS: 39,9% de 215 MIPS, ou 85,78 MIPS
  •    Usuários simultâneos: 100


      Milhares de usuários simultâneos em
            Produção, maior economia
ROI
                        ATRIBUTO                     VALOR
Qtde de processadores                                            1
MIPS por processador                                           215
Custo por MIPS (US$) em cinco anos (suposição)          27.000,00
Período (em anos) apuração do custo                              5


Economia em CPU (minutos) (em 51 minutos do teste)           20,35
Economia em tempo de resposta                                 55%
Máquina economizada (%)                                      39,9%

MIPS poupados (39,9% de 1 processador de 215 MIPS)
                                                             85,78
US$ economizado anualmente (sem considerar nenhum
crescimento anual de CPU)                              463.212,00


       Crescimento anual da CPU (%) - estimado                15%
PROJETO DE OTIMIZAÇÃO

ECONOMIA EM 10 ANOS – MIPS Acumulados
   (Crescimento anual da CPU de 15%)

       350,00
       300,00
       250,00
       200,00
Mips
       150,00
       100,00
        50,00
          -
                 1   2   3   4   5          6   7   8   9   10
                                     Anos
PROJETO DE OTIMIZAÇÃO

     ECONOMIA EM 10 ANOS - VALOR (US$)
       (Crescimento anual da CPU de 15%)

10.000.000,00
 9.000.000,00
 8.000.000,00
 7.000.000,00
 6.000.000,00
 5.000.000,00
 4.000.000,00
 3.000.000,00
 2.000.000,00
 1.000.000,00
         0,00
                1   2   3   4   5          6   7   8   9   10
                                    Anos
PROJETO DE OTIMIZAÇÃO




ECONOMIA EM 10 ANOS

   VALOR TOTAL

   US$ 9.404.925,93
Outros Ganhos
Aplicar o processo no workload DB2
  • SQLs idênticos e similares consolidados
  • Relacionamentos múltiplos
       Programas x Sub-Programas x Transações
  • SQLs com scans detectados
  • Indicar predicados candidatos a Índices
  • Recomendações de Índices
       Problema Fatorial (Combinações)
       Previsão de ganhos
       Automação
Metodologias para otimização

  • Tabelas DB2 mais acessadas
  • Programas DB2 de maior consumo
  • Transações DB2 com maior consumo
  • Comandos SQL que mais consomem
  • SLA - foco de estudos: On-line / Batch / horários
    específicos
  • Maiores consumos de LOG do DB2
  • Sugestões de indíce em geral (por tabela,
    programas etc.)
Outras Considerações

  • Método preventivo e pró-ativo
       Processo em Pré-Produção (Homologação)
  • Detectar desvios de consumo
  • Processo de análise de impacto
       Comparar histórico de planos de acesso
       Evitar as “segundas-feiras de terror”
Outros Ganhos
Melhor atendimento
Menor tempo de resposta proporciona melhor atendimento aos
clientes da organização

Estabilidade e Qualidade
Ambiente otimizado proporciona maior estabilidade e qualidade tanto
interna quanto externamente
POC QC ADVISOR


      Dúvidas?

        José Tito
jose.tito@eccox.com.br

      Obrigado!
BACKUP TÉCNICO
Eccox/QC SQL Advisor

RESUMO PROGRAMA

PROGRAM NAME: xxx0024             ( %CPU-WKLD=
                                    %CPU-           4.019946    )

ACCOUNTING DATA                              PERFORMANCE DATA
  -------------------------------------------- ---------------------------------------------------------------
DB2_ELAP:      2,180.366448                  DB2_ELAP:         19.559378
DB2_CPU :        630.375678                  DB2_CPU :          1.181888
AVG_CPU :          0.596946                  AVG_CPU :          0.000393

TOTAL EXECUTIONS   :               3003
TOTAL_REOPT        :                 0
TOTAL_NOREOPT      :                 0
                                 INDEX               DATA               SORT
ROWS_SCAN_TBL_1     :            1,760              2,295                512
ROWS_SCAN_TBE_2     :               23              1,887                512
ROWS_QUAL_STAG_1    :            1,611                303                512
ROWS_QUAL_STAG_2    :            1,609                303                228
TOT_ROWS_INSERT     :                0                  0              1,038
TOT_ROWS_UPDATE     :                0                  0                  0
TOT_ROWS_DELETE     :                0                  0                  0
TOT_PAGE_SCAN       :            4,345              2,191              2,956
TOT_PAGE_SCAN_RI    :                0                  0                  0
TOT_PAGE_ROWS_DEL_RI:                0                  0                  0
Eccox/QC SQL Advisor

 RECOMENDAÇÃO DE ÍNDICES (TABELA XXXXXOMT)

 VOLUME: 343.279 REGISTROS

 COMBINAÇÕES TESTADAS: 2104

 ESTIMATIVA MELHORA: 21,87 %

 Indices atuais:
 XXXXXOI1            - recomendacao: manter inalterado
 XXXXXOI1            - recomendacao: deletar
 XXXXXOI2            - recomendacao: manter inalterado
 XXXXXOI3            - recomendacao: manter inalterado
 XXXXXOI4            - recomendacao: deletar
 XXXXXOI5            - recomendacao: deletar
 XXXXXOI6            - recomendacao: deletar
 Indices novos:
 Criar 3 novos índíces
Eccox/QC SQL Advisor


 RECOMENDAÇÃO DE ÍNDICES (TABELA XXXXXCMT)

 VOLUME: 391.064 REGISTROS

 COMBINAÇÕES TESTADAS: 1564

 ESTIMATIVA MELHORA: 11,58 %

 Índices atuais:
 XXXXXXOI1 - recomendacao: alterar
 XXXXXCI1        - recomendacao: manter inalterado
 Índices novos:
 Criar 5 novos índices
Eccox/QC SQL Advisor

  Statements do programa analisados

  Stmt: 5638       tabela XXXXXRMT cursor: CUR_XXXXXRDV_SAD


  DB2 tempo sala:            98% tempo total
  Custo Original:            5 service units
                             6 ms (CPU)


  Solução:

  Alterar índice existente

  Novo Custo esperado:              1 service units (> 80%)
                                    1 ms (CPU)      (> 80%)
Eccox/QC SQL Advisor

 Statements do programa analisados

 Stmt: 5638      tabela XXXXXRMT cursor: CUR_XXXXXRDV_SAD (cont)


 Texto SQL Original

 DECLARE CUR_PQPCDRDV_SAD CURSOR FOR
 SELECT PCD_COD_PRO_CMR_CD
 FROM ATISOWN.PQPCDRDV
 WHERE
 PCD_TIP_DIR_PRO_CD = ? AND
 PCD_COD_DIR_CD = ? AND
 PCD_COD_PRO_CMR_CD >= ? AND
 PCD_FEC_INI_VIG_FF <= CURRENT_DATE AND
 PCD_FEC_FIN_VIG_FF >= CURRENT_DATE AND
 PCD_ITE_BAJ_SIS_TS IS NULL
 ORDER BY PCD_COD_PRO_CMR_CD OPTIMIZE FOR 1 ROW
Eccox/QC SQL Advisor


 Statements do programa analisados


 Stmt: 2835     tabela XXXXXOMT cursor: CUR_CLI_AMBOS

 DB2 elapsed medido:           40% tempo total
                               (ou 1.7% - teste stress)

 Custo Original (com Union):   7 service units
                               8 ms (CPU)
 Solução:

                               Diversas soluções foram encontradas…
Eccox/QC SQL Advisor


 Statements do programa analisados
 Stmt: 2835       tabela XXXXXOMT cursor: CUR_CLI_AMBOS

 a) Soluções que não dependem da analise do código fonte:

 a.1) Continuar com Union e criar 2 novos indices (*)
                  su: 6 CPU: 7

 b) Soluções que dependem da analise do código fonte:

 b.1) Mudar para OR ao invés de Union, mas é necessário saber se
       PRC_COD_PRO_CMR_CD >=0 é utilizado… se for, esta solução não é
       válida, pode causar oscilações tempo resposta
                   su: 3 CPU: 3
       (detalhe: usou técnica de interseção de índices e fez sort)

 b.2) idem a.1, mas modificando o SQL (ORDER e UNION) pode-se chegar a:
                  su: 3 CPU: 3
Eccox/QC SQL Advisor

  Statements do programa analisados

  Stmt: 2835      tabela XXXXXOMT cursor: CUR_CLI_AMBOS

  Análise dos índices da tabela XXXXXOMT (342.279 regs)

  1) Novo índice: ATISOWN. PQPRCOIA        (único)
  PRC_COD_CLI_CD                ASC        (132.003)
  PRC_ITE_BAJ_SIS_TS            ASC        (1)
  PRC_COD_PRO_CMR_CD            ASC        (342.279)

  2) Novo índice: ATISOWN. PQPRCOIB        (único)
  PRC_COD_CLI_TIT_CD            ASC        (132.003)
  PRC_ITE_BAJ_SIS_TS            ASC        (1)
  PRC_COD_PRO_CMR_CD            ASC        (342.279)
Eccox/QC SQL Advisor

 Statements do programa analisados

 Stmt: 2835      tabela XXXXXOMT cursor: CUR_CLI_AMBOS

 Análise dos índices da tabela XXXXXOMT (343.279 regs)

 CREATE INDEX ATISOWN.XXXXXOI1
 (PRC_TIP_PRO_CMR_CD ASC,                 (2)
 PRC_SBT_PRO_CMR_CD ASC)                  (16)

 CREATE UNIQUE INDEX ATISOWN.XXXXXOI4
 (PRC_COD_CMR_PRN_CD ASC,                 (48)
 PRC_IND_CMR_GCO_IN ASC,                  (2)
 PRC_COD_PRO_CMR_CD ASC,                  (343.279)
 PRC_TIP_PRO_CMR_CD ASC,                  (2)
 PRC_SBT_PRO_CMR_CD ASC)                  (16)

 CREATE INDEX ATISOWN.XXXXXOI5
 (PRC_COD_PET_CD    ASC,                  (96)
 PRC_COD_AGR_SUB_NU ASC)                  3

 CREATE INDEX ATISOWN.XXXXXOI6
 (PRC_CET_COS_CLI_CD ASC)                 (1)
Eccox/QC SQL Advisor


 Statements do programa analisados

 Stmt: 6869           tabela XXXXXCMT cursor: CUR_IDPC_SAD

 DB2 elapsed medido:         10% tempo total (ou 1.5% - teste stress)
 Custo Original:             4 service units
                             5 ms (CPU)
 Solução:
 Criar índice novo ATISOWN. XXXXXCIC (não-único)
                             XXXXXCMT   (391.064)
 IDP_COD_PRO_CMR_CD          ASC        (343.279)
 IDP_ITE_BAJ_SIS_TS          ASC        (1)
 IDP_FEC_INI_VIG_FF          DESC           (14.800)
 IDP_FEC_FIN_VIG_FF          ASC        (7424)

 Novo Custo Esperado:        1 service units (> 75%)
                             1 ms (cpu)      (> 75%)
Eccox/QC SQL Advisor

  Statements do programa analisados


  Stmt: 7642        tabela XXXXXCMT cursor:(select sem cursor)

  DB2 elapsed medido:      50% tempo total
                           (não localizado - teste stress)
  Custo Original:          5 service units
                           6 ms (CPU)

  Solução:
  Alterar a sintaxe no comando SQL

  Novo Custo Esperado: 1 service units (> 80%)
                       2 ms (CPU)      (> 70%)
Eccox/QC SQL Advisor

  Statements do programa analisados
  Stmt: 7642           tabela XXXXXCMT cursor:(select sem cursor)

  Texto SQL original

  SELECT IDP_COD_PRO_CMR_CD, IDP_FEC_INI_VIG_FF, IDP_FEC_FIN_VIG_FF
  FROM ATISOWN.PQIDPCDV
   WHERE IDP_NUM_IDE_NU = ? AND
   IDP_IDE_PRO_CMR_CD = ? AND
   IDP_FEC_INI_VIG_FF <= CURRENT_DATE AND
   IDP_FEC_FIN_VIG_FF >= CURRENT_DATE AND
   IDP_ITE_BAJ_SIS_TS IS NULL AND
  (IDP_TIM_ULT_MOD_TS IN
    ( SELECT MAX ( IDP_TIM_ULT_MOD_TS )
      FROM ATISOWN.PQIDPCDV
      WHERE IDP_NUM_IDE_NU = ? AND
         IDP_IDE_PRO_CMR_CD = ? AND
         IDP_FEC_INI_VIG_FF <= CURRENT_DATE AND
         IDP_FEC_FIN_VIG_FF >= CURRENT_DATE AND
         IDP_ITE_BAJ_SIS_TS IS NULL
Eccox/QC SQL Advisor

 Statements do programa analisados
 Stmt: 7642           tabela XXXXXCMT cursor:(select sem cursor)

 Texto SQL Alterado

 SELECT A.IDP_COD_PRO_CMR_CD , A.IDP_FEC_INI_VIG_FF
     ,A.IDP_FEC_FIN_VIG_FF
 FROM ATISOWN.PQIDPCDV A WHERE A.IDP_NUM_IDE_NU = ? AND
     A.IDP_IDE_PRO_CMR_CD = ? AND A.IDP_FEC_INI_VIG_FF <= CURRENT_DATE
     AND
  A.IDP_FEC_FIN_VIG_FF >= CURRENT_DATE AND A.IDP_ITE_BAJ_SIS_TS IS NULL
     AND
 (A.IDP_TIM_ULT_MOD_TS IN ( SELECT MAX ( B.IDP_TIM_ULT_MOD_TS )
     FROM ATISOWN.PQIDPCDV B WHERE B.IDP_NUM_IDE_NU =
     A.IDP_NUM_IDE_NU AND
       B.IDP_IDE_PRO_CMR_CD = A.IDP_IDE_PRO_CMR_CD AND
       B.IDP_FEC_INI_VIG_FF = A.IDP_FEC_INI_VIG_FF AND
       B.IDP_FEC_FIN_VIG_FF = A.IDP_FEC_FIN_VIG_FF AND
           B.IDP_ITE_BAJ_SIS_TS = A.IDP_ITE_BAJ_SIS_TS))
Eccox/QC SQL Advisor

  Statements do programa analisados

  Stmt: 2776        tabela XXXXXADV cursor: (select sem cursor)

  DB2 elapsed medido:       1% tempo total
                            (ou 0.76% - teste stress)
  Custo Original:           6 service units
                            7 ms (CPU)

  Solução:
  1)Alterar comandos SQL

  Novo Custo esperado:      1 service units (> 90%)
                            2 ms (CPU)       (> 80%)

  2)Criar novo índice e alterar comando SQL (ainda não testado)
Eccox/QC SQL Advisor

  Statements do programa analisados
  Stmt: 2776      tabela XXXXXADV cursor: (select sem cursor)

  CREATE UNIQUE INDEX ATISOWN.XXXXXAI0
   (PSP_COD_PRO_CMR_CD ASC, (171.614)
    PSP_PRO_SER_CTO_CD ASC, (1.009.000)
    PSP_TIP_PRO_SER_CD ASC)     (9)

  CREATE UNIQUE INDEX ATISOWN.XXXXXAI1
   (PSP_PRO_SER_CTO_CD ASC) (1.009.000)

  CREATE UNIQUE INDEX ATISOWN.XXXXXAI2
     (PSP_NUM_AVA_NU     ASC,   (1)
    PSP_PRO_SER_CTO_CD ASC) (1.009.000)

  CREATE UNIQUE INDEX ATISOWN.XXXXXAI3 (não utilizado)
   (PSP_CET_COS_CLI_CD ASC,     (1)
    PSP_PRO_SER_CTO_CD ASC) (1.009.000)

  CREATE INDEX ATISOWN.XXXXXAI4
  (PSP_COD_PRO_SER_CD ASC)      (455)
Eccox/QC SQL Advisor

  Statements do programa analisados

  Stmt: 2776           tabela XXXXXADV cursor: (select sem cursor)

  Texto SQL Original

  SELECT PSP_PRO_SER_CTO_CD
  FROM PQPSPADV
  WHERE PSP_COD_PRO_CMR_CD = ? AND
  PSP_FEC_INI_VIG_FF <= CURRENT_DATE AND
  PSP_FEC_FIN_VIG_FF >= CURRENT_DATE AND
  PSP_ITE_BAJ_SIS_TS IS NULL AND
  PSP_TIM_ULT_MOD_TS IN
  (( SELECT MAX ( PSP_TIM_ULT_MOD_TS )
  FROM PQPSPADV
  WHERE PSP_COD_PRO_CMR_CD = ? AND
  PSP_FEC_INI_VIG_FF <= CURRENT_DATE AND
  PSP_FEC_FIN_VIG_FF >= CURRENT_DATE AND
  PSP_ITE_BAJ_SIS_TS IS NULL))
Eccox/QC SQL Advisor

  Statements do programa analisados

  Stmt: 2776     tabela XXXXXADV cursor: (select sem cursor)
  Texto SQL Alterado

  SELECT A.PSP_PRO_SER_CTO_CD FROM ATISOWN.PQPSPADV A
  WHERE A.PSP_COD_PRO_CMR_CD = ? AND
  A.PSP_FEC_INI_VIG_FF <= CURRENT_DATE AND
  A.PSP_FEC_FIN_VIG_FF >= CURRENT_DATE AND
  A.PSP_ITE_BAJ_SIS_TS IS NULL AND
  A.PSP_TIM_ULT_MOD_TS IN ( SELECT MAX ( B.PSP_TIM_ULT_MOD_TS )
  FROM ATISOWN.PQPSPADV B WHERE
  B.PSP_COD_PRO_CMR_CD = A.PSP_COD_PRO_CMR_CD AND
  B.PSP_FEC_INI_VIG_FF = A.PSP_FEC_INI_VIG_FF AND
  B.PSP_FEC_FIN_VIG_FF = A.PSP_FEC_FIN_VIG_FF AND
  B.PSP_ITE_BAJ_SIS_TS = A.PSP_ITE_BAJ_SIS_TS)

More Related Content

Similar to Projeto de otimização de Performance e Redução de Custos Sistema On-Line

As percepções Relativas na Application Performance Management, por Gilberto M...
As percepções Relativas na Application Performance Management, por Gilberto M...As percepções Relativas na Application Performance Management, por Gilberto M...
As percepções Relativas na Application Performance Management, por Gilberto M...Joao Galdino Mello de Souza
 
IPT defesa Wagner F Canto v6
IPT defesa Wagner F Canto v6IPT defesa Wagner F Canto v6
IPT defesa Wagner F Canto v6wfcanto
 
A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...
A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...
A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...Joao Galdino Mello de Souza
 
Planejamento e Controle da Produção
Planejamento e Controle da Produção Planejamento e Controle da Produção
Planejamento e Controle da Produção Geovana Pires Lima
 
[BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ...
 [BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ... [BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ...
[BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ...EloGroup
 
[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...
[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...
[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...EloGroup
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoFabrício Catae
 
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Rodrigo Almeida
 
Arquitetando com buzzwords
Arquitetando com buzzwordsArquitetando com buzzwords
Arquitetando com buzzwordsFabiano Modos
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlLocaweb
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis Científica
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016Roberto Fonseca
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring DatabasesIsmael
 
Aula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAmós Lhips
 

Similar to Projeto de otimização de Performance e Redução de Custos Sistema On-Line (20)

Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
 
As percepções Relativas na Application Performance Management, por Gilberto M...
As percepções Relativas na Application Performance Management, por Gilberto M...As percepções Relativas na Application Performance Management, por Gilberto M...
As percepções Relativas na Application Performance Management, por Gilberto M...
 
IPT defesa Wagner F Canto v6
IPT defesa Wagner F Canto v6IPT defesa Wagner F Canto v6
IPT defesa Wagner F Canto v6
 
A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...
A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...
A Automação dos Processos na Gestão de Performance das Aplicações por Gilbert...
 
Mainframe Performance Review
Mainframe Performance ReviewMainframe Performance Review
Mainframe Performance Review
 
Planejamento e Controle da Produção
Planejamento e Controle da Produção Planejamento e Controle da Produção
Planejamento e Controle da Produção
 
Protheus V12
Protheus V12Protheus V12
Protheus V12
 
[BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ...
 [BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ... [BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ...
[BPM Day Porto Alegre 2014] Luciano André Merigo (Unicasa) – Ganhos rápidos ...
 
[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...
[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...
[BPM Day Porto Alegre] Luciano André Merigo (Unicasa) - Ganhos rápidos (quick...
 
Parcial metq
Parcial metqParcial metq
Parcial metq
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
 
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
 
Arquitetando com buzzwords
Arquitetando com buzzwordsArquitetando com buzzwords
Arquitetando com buzzwords
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sql
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial V
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016
 
Cap.1.3 medidas desempenho
Cap.1.3 medidas desempenhoCap.1.3 medidas desempenho
Cap.1.3 medidas desempenho
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
 
Performance tdc sp 2020 final
Performance tdc sp 2020 finalPerformance tdc sp 2020 final
Performance tdc sp 2020 final
 
Aula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós Lhips
 

More from Joao Galdino Mello de Souza

Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Joao Galdino Mello de Souza
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Joao Galdino Mello de Souza
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Joao Galdino Mello de Souza
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Joao Galdino Mello de Souza
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Joao Galdino Mello de Souza
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Joao Galdino Mello de Souza
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Joao Galdino Mello de Souza
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Joao Galdino Mello de Souza
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Joao Galdino Mello de Souza
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Joao Galdino Mello de Souza
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Joao Galdino Mello de Souza
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Joao Galdino Mello de Souza
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Joao Galdino Mello de Souza
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Joao Galdino Mello de Souza
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Joao Galdino Mello de Souza
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)Joao Galdino Mello de Souza
 

More from Joao Galdino Mello de Souza (20)

Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
 

Projeto de otimização de Performance e Redução de Custos Sistema On-Line

  • 1. Projeto de Otimização de Performance e Redução de Custos Sistema On-line Empresa de Serviços
  • 2. PROJETO DE OTIMIZAÇÃO Objetivo do Projeto Comprovar a viabilidade de ganhos de performance e redução de custos em ambiente Mainframe de um novo sistema de Call Center.
  • 3. PROJETO DE OTIMIZAÇÃO Cenário Robô simulando carga de 100 usuários com alguns cenários similares ao ambiente de Produção.
  • 4. PROJETO DE OTIMIZAÇÃO Premissas • Focar sub-rotina XXX0024 • Definir e utilizar processo não-intrusivo • Aplicar processo de otimização • Escolher pontos a otimizar • Efetuar as alterações propostas • Efetuar medições prévias e posteriores • Apurar os ganhos
  • 5. POC QC ADVISOR Desafios • Redução do time to market • Volume crescente de implantações • Manter desempenho adequado • Manter disponibilidade • Otimização rápida
  • 6. POC QC ADVISOR Cenário em Produção • Ambiente Mainframe Z/OS • Aplicações CICS, Cobol, DB2 • Ambiente de Produção de 5000 MIPs
  • 7. PROJETO DE OTIMIZAÇÃO Tópicos do Projeto • Escopo e processo utilizado • Descrição Macro • Dados Obtidos • Resultados • Premissas para cálculo da economia de MIPS • ROI
  • 8. Escopo e processo utilizado • Focar a sub-rotina XXX0024: a mais utilizada no on- line • 62% do uso de CPU nos testes de stress do novo sistema • Mais de 80 comandos SQL de difícil avaliação manual • Provar que o processo é viável para todo workload em DB2
  • 9. Processo Escolhido Geração de traces de performance do DB2 tendo como metas: evitar impacto de desempenho (amostragem) automação na análise dos traces detectar comandos de maior consumo extensa gama de informações propor alterações de índices (processo automático) propor otimizações de SQL de alto consumo
  • 10. Descrição Macro • Coletar amostras de traces de performance do DB2 • Aplicar processo automático de análise dos traces • Recomendar automaticamente índices e alterações • Teste de stress da situação anterior • Efetuar alterações, teste de stress e medições na situação nova
  • 11. PROJETO DE OTIMIZAÇÃO Dados Obtidos Tabelas mais acessadas e analisadas XXXXXRMT XXXXXCMT XXXXXAMT XXXXXOMT Comandos de maior consumo (99%) Stmt: 5638 XXXXXRMT CUR_XXXXXRDV_SAD Stmt: 2835 XXXXXOMT CUR_CLI_AMBOS Stmt: 6869 XXXXXCMT CUR_IDPC_SAD Stmt: 7642 XXXXXCMT (select sem cursor) Stmt: 2776 XXXXXADV (select sem cursor)
  • 12. PROJETO DE OTIMIZAÇÃO Dados Obtidos Solução – Tabelas (recomendação automática) XXXXXRMT - ALTERAÇÃO DE 1 (UM) ÍNDICE XXXXXCMT - CRIAÇÃO DE 1 (UM) ÍNDICE XXXXXAMT - CRIAÇÃO DE 1 (UM) ÍNDICE XXXXXOMT - CRIAÇÃO / DELEÇÃO DE ÍNDICES Solução para otimizar comandos Ganho Previsto Stmt: 5638 (índice) < 80% Stmt: 2835 (índice/alterar SQL) < 10 a 50% Stmt: 6869 (índice) < 75% Stmt: 7642 (alterar SQL) < 60% Stmt: 2776 (índice / alterar SQL) < 80%
  • 13. PROJETO DE OTIMIZAÇÃO Resultados OBJETO MENSURADO ANTES DEPOIS %REDUÇÃO TEMPO DE RESPOSTA MÉDIO 0,231 0,103 55% GRUPO DE TRN PE** 0,383 0,09 76% GRUPO DE TRN VI** 0,187 0,072 62% CPU TOTAL PQD0024 1224 3 99% Resultados permitiram revisão do capacity previsto para o sistema em 30%
  • 14. Premissas para cálculo da economia de MIPS • O processador do ambiente é de 215 MIPS • O perfil da carga de transações do stress é similar ao da Produção • O teste de stress foi executado em 51 minutos. (13h53 às 14h44) • A CPU disponível para um processador seria de 51 minutos, ou 3.060 segundos • CPU economizada após alterações: 1.221 segundos • Economia em percentual: 39,9% (1221 segundos de 3.060 segundos) • Economia em MIPS: 39,9% de 215 MIPS, ou 85,78 MIPS • Usuários simultâneos: 100 Milhares de usuários simultâneos em Produção, maior economia
  • 15. ROI ATRIBUTO VALOR Qtde de processadores 1 MIPS por processador 215 Custo por MIPS (US$) em cinco anos (suposição) 27.000,00 Período (em anos) apuração do custo 5 Economia em CPU (minutos) (em 51 minutos do teste) 20,35 Economia em tempo de resposta 55% Máquina economizada (%) 39,9% MIPS poupados (39,9% de 1 processador de 215 MIPS) 85,78 US$ economizado anualmente (sem considerar nenhum crescimento anual de CPU) 463.212,00 Crescimento anual da CPU (%) - estimado 15%
  • 16. PROJETO DE OTIMIZAÇÃO ECONOMIA EM 10 ANOS – MIPS Acumulados (Crescimento anual da CPU de 15%) 350,00 300,00 250,00 200,00 Mips 150,00 100,00 50,00 - 1 2 3 4 5 6 7 8 9 10 Anos
  • 17. PROJETO DE OTIMIZAÇÃO ECONOMIA EM 10 ANOS - VALOR (US$) (Crescimento anual da CPU de 15%) 10.000.000,00 9.000.000,00 8.000.000,00 7.000.000,00 6.000.000,00 5.000.000,00 4.000.000,00 3.000.000,00 2.000.000,00 1.000.000,00 0,00 1 2 3 4 5 6 7 8 9 10 Anos
  • 18. PROJETO DE OTIMIZAÇÃO ECONOMIA EM 10 ANOS VALOR TOTAL US$ 9.404.925,93
  • 19. Outros Ganhos Aplicar o processo no workload DB2 • SQLs idênticos e similares consolidados • Relacionamentos múltiplos Programas x Sub-Programas x Transações • SQLs com scans detectados • Indicar predicados candidatos a Índices • Recomendações de Índices Problema Fatorial (Combinações) Previsão de ganhos Automação
  • 20. Metodologias para otimização • Tabelas DB2 mais acessadas • Programas DB2 de maior consumo • Transações DB2 com maior consumo • Comandos SQL que mais consomem • SLA - foco de estudos: On-line / Batch / horários específicos • Maiores consumos de LOG do DB2 • Sugestões de indíce em geral (por tabela, programas etc.)
  • 21. Outras Considerações • Método preventivo e pró-ativo Processo em Pré-Produção (Homologação) • Detectar desvios de consumo • Processo de análise de impacto Comparar histórico de planos de acesso Evitar as “segundas-feiras de terror”
  • 22. Outros Ganhos Melhor atendimento Menor tempo de resposta proporciona melhor atendimento aos clientes da organização Estabilidade e Qualidade Ambiente otimizado proporciona maior estabilidade e qualidade tanto interna quanto externamente
  • 23. POC QC ADVISOR Dúvidas? José Tito jose.tito@eccox.com.br Obrigado!
  • 25. Eccox/QC SQL Advisor RESUMO PROGRAMA PROGRAM NAME: xxx0024 ( %CPU-WKLD= %CPU- 4.019946 ) ACCOUNTING DATA PERFORMANCE DATA -------------------------------------------- --------------------------------------------------------------- DB2_ELAP: 2,180.366448 DB2_ELAP: 19.559378 DB2_CPU : 630.375678 DB2_CPU : 1.181888 AVG_CPU : 0.596946 AVG_CPU : 0.000393 TOTAL EXECUTIONS : 3003 TOTAL_REOPT : 0 TOTAL_NOREOPT : 0 INDEX DATA SORT ROWS_SCAN_TBL_1 : 1,760 2,295 512 ROWS_SCAN_TBE_2 : 23 1,887 512 ROWS_QUAL_STAG_1 : 1,611 303 512 ROWS_QUAL_STAG_2 : 1,609 303 228 TOT_ROWS_INSERT : 0 0 1,038 TOT_ROWS_UPDATE : 0 0 0 TOT_ROWS_DELETE : 0 0 0 TOT_PAGE_SCAN : 4,345 2,191 2,956 TOT_PAGE_SCAN_RI : 0 0 0 TOT_PAGE_ROWS_DEL_RI: 0 0 0
  • 26. Eccox/QC SQL Advisor RECOMENDAÇÃO DE ÍNDICES (TABELA XXXXXOMT) VOLUME: 343.279 REGISTROS COMBINAÇÕES TESTADAS: 2104 ESTIMATIVA MELHORA: 21,87 % Indices atuais: XXXXXOI1 - recomendacao: manter inalterado XXXXXOI1 - recomendacao: deletar XXXXXOI2 - recomendacao: manter inalterado XXXXXOI3 - recomendacao: manter inalterado XXXXXOI4 - recomendacao: deletar XXXXXOI5 - recomendacao: deletar XXXXXOI6 - recomendacao: deletar Indices novos: Criar 3 novos índíces
  • 27. Eccox/QC SQL Advisor RECOMENDAÇÃO DE ÍNDICES (TABELA XXXXXCMT) VOLUME: 391.064 REGISTROS COMBINAÇÕES TESTADAS: 1564 ESTIMATIVA MELHORA: 11,58 % Índices atuais: XXXXXXOI1 - recomendacao: alterar XXXXXCI1 - recomendacao: manter inalterado Índices novos: Criar 5 novos índices
  • 28. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 5638 tabela XXXXXRMT cursor: CUR_XXXXXRDV_SAD DB2 tempo sala: 98% tempo total Custo Original: 5 service units 6 ms (CPU) Solução: Alterar índice existente Novo Custo esperado: 1 service units (> 80%) 1 ms (CPU) (> 80%)
  • 29. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 5638 tabela XXXXXRMT cursor: CUR_XXXXXRDV_SAD (cont) Texto SQL Original DECLARE CUR_PQPCDRDV_SAD CURSOR FOR SELECT PCD_COD_PRO_CMR_CD FROM ATISOWN.PQPCDRDV WHERE PCD_TIP_DIR_PRO_CD = ? AND PCD_COD_DIR_CD = ? AND PCD_COD_PRO_CMR_CD >= ? AND PCD_FEC_INI_VIG_FF <= CURRENT_DATE AND PCD_FEC_FIN_VIG_FF >= CURRENT_DATE AND PCD_ITE_BAJ_SIS_TS IS NULL ORDER BY PCD_COD_PRO_CMR_CD OPTIMIZE FOR 1 ROW
  • 30. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2835 tabela XXXXXOMT cursor: CUR_CLI_AMBOS DB2 elapsed medido: 40% tempo total (ou 1.7% - teste stress) Custo Original (com Union): 7 service units 8 ms (CPU) Solução: Diversas soluções foram encontradas…
  • 31. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2835 tabela XXXXXOMT cursor: CUR_CLI_AMBOS a) Soluções que não dependem da analise do código fonte: a.1) Continuar com Union e criar 2 novos indices (*) su: 6 CPU: 7 b) Soluções que dependem da analise do código fonte: b.1) Mudar para OR ao invés de Union, mas é necessário saber se PRC_COD_PRO_CMR_CD >=0 é utilizado… se for, esta solução não é válida, pode causar oscilações tempo resposta su: 3 CPU: 3 (detalhe: usou técnica de interseção de índices e fez sort) b.2) idem a.1, mas modificando o SQL (ORDER e UNION) pode-se chegar a: su: 3 CPU: 3
  • 32. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2835 tabela XXXXXOMT cursor: CUR_CLI_AMBOS Análise dos índices da tabela XXXXXOMT (342.279 regs) 1) Novo índice: ATISOWN. PQPRCOIA (único) PRC_COD_CLI_CD ASC (132.003) PRC_ITE_BAJ_SIS_TS ASC (1) PRC_COD_PRO_CMR_CD ASC (342.279) 2) Novo índice: ATISOWN. PQPRCOIB (único) PRC_COD_CLI_TIT_CD ASC (132.003) PRC_ITE_BAJ_SIS_TS ASC (1) PRC_COD_PRO_CMR_CD ASC (342.279)
  • 33. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2835 tabela XXXXXOMT cursor: CUR_CLI_AMBOS Análise dos índices da tabela XXXXXOMT (343.279 regs) CREATE INDEX ATISOWN.XXXXXOI1 (PRC_TIP_PRO_CMR_CD ASC, (2) PRC_SBT_PRO_CMR_CD ASC) (16) CREATE UNIQUE INDEX ATISOWN.XXXXXOI4 (PRC_COD_CMR_PRN_CD ASC, (48) PRC_IND_CMR_GCO_IN ASC, (2) PRC_COD_PRO_CMR_CD ASC, (343.279) PRC_TIP_PRO_CMR_CD ASC, (2) PRC_SBT_PRO_CMR_CD ASC) (16) CREATE INDEX ATISOWN.XXXXXOI5 (PRC_COD_PET_CD ASC, (96) PRC_COD_AGR_SUB_NU ASC) 3 CREATE INDEX ATISOWN.XXXXXOI6 (PRC_CET_COS_CLI_CD ASC) (1)
  • 34. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 6869 tabela XXXXXCMT cursor: CUR_IDPC_SAD DB2 elapsed medido: 10% tempo total (ou 1.5% - teste stress) Custo Original: 4 service units 5 ms (CPU) Solução: Criar índice novo ATISOWN. XXXXXCIC (não-único) XXXXXCMT (391.064) IDP_COD_PRO_CMR_CD ASC (343.279) IDP_ITE_BAJ_SIS_TS ASC (1) IDP_FEC_INI_VIG_FF DESC (14.800) IDP_FEC_FIN_VIG_FF ASC (7424) Novo Custo Esperado: 1 service units (> 75%) 1 ms (cpu) (> 75%)
  • 35. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 7642 tabela XXXXXCMT cursor:(select sem cursor) DB2 elapsed medido: 50% tempo total (não localizado - teste stress) Custo Original: 5 service units 6 ms (CPU) Solução: Alterar a sintaxe no comando SQL Novo Custo Esperado: 1 service units (> 80%) 2 ms (CPU) (> 70%)
  • 36. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 7642 tabela XXXXXCMT cursor:(select sem cursor) Texto SQL original SELECT IDP_COD_PRO_CMR_CD, IDP_FEC_INI_VIG_FF, IDP_FEC_FIN_VIG_FF FROM ATISOWN.PQIDPCDV WHERE IDP_NUM_IDE_NU = ? AND IDP_IDE_PRO_CMR_CD = ? AND IDP_FEC_INI_VIG_FF <= CURRENT_DATE AND IDP_FEC_FIN_VIG_FF >= CURRENT_DATE AND IDP_ITE_BAJ_SIS_TS IS NULL AND (IDP_TIM_ULT_MOD_TS IN ( SELECT MAX ( IDP_TIM_ULT_MOD_TS ) FROM ATISOWN.PQIDPCDV WHERE IDP_NUM_IDE_NU = ? AND IDP_IDE_PRO_CMR_CD = ? AND IDP_FEC_INI_VIG_FF <= CURRENT_DATE AND IDP_FEC_FIN_VIG_FF >= CURRENT_DATE AND IDP_ITE_BAJ_SIS_TS IS NULL
  • 37. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 7642 tabela XXXXXCMT cursor:(select sem cursor) Texto SQL Alterado SELECT A.IDP_COD_PRO_CMR_CD , A.IDP_FEC_INI_VIG_FF ,A.IDP_FEC_FIN_VIG_FF FROM ATISOWN.PQIDPCDV A WHERE A.IDP_NUM_IDE_NU = ? AND A.IDP_IDE_PRO_CMR_CD = ? AND A.IDP_FEC_INI_VIG_FF <= CURRENT_DATE AND A.IDP_FEC_FIN_VIG_FF >= CURRENT_DATE AND A.IDP_ITE_BAJ_SIS_TS IS NULL AND (A.IDP_TIM_ULT_MOD_TS IN ( SELECT MAX ( B.IDP_TIM_ULT_MOD_TS ) FROM ATISOWN.PQIDPCDV B WHERE B.IDP_NUM_IDE_NU = A.IDP_NUM_IDE_NU AND B.IDP_IDE_PRO_CMR_CD = A.IDP_IDE_PRO_CMR_CD AND B.IDP_FEC_INI_VIG_FF = A.IDP_FEC_INI_VIG_FF AND B.IDP_FEC_FIN_VIG_FF = A.IDP_FEC_FIN_VIG_FF AND B.IDP_ITE_BAJ_SIS_TS = A.IDP_ITE_BAJ_SIS_TS))
  • 38. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2776 tabela XXXXXADV cursor: (select sem cursor) DB2 elapsed medido: 1% tempo total (ou 0.76% - teste stress) Custo Original: 6 service units 7 ms (CPU) Solução: 1)Alterar comandos SQL Novo Custo esperado: 1 service units (> 90%) 2 ms (CPU) (> 80%) 2)Criar novo índice e alterar comando SQL (ainda não testado)
  • 39. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2776 tabela XXXXXADV cursor: (select sem cursor) CREATE UNIQUE INDEX ATISOWN.XXXXXAI0 (PSP_COD_PRO_CMR_CD ASC, (171.614) PSP_PRO_SER_CTO_CD ASC, (1.009.000) PSP_TIP_PRO_SER_CD ASC) (9) CREATE UNIQUE INDEX ATISOWN.XXXXXAI1 (PSP_PRO_SER_CTO_CD ASC) (1.009.000) CREATE UNIQUE INDEX ATISOWN.XXXXXAI2 (PSP_NUM_AVA_NU ASC, (1) PSP_PRO_SER_CTO_CD ASC) (1.009.000) CREATE UNIQUE INDEX ATISOWN.XXXXXAI3 (não utilizado) (PSP_CET_COS_CLI_CD ASC, (1) PSP_PRO_SER_CTO_CD ASC) (1.009.000) CREATE INDEX ATISOWN.XXXXXAI4 (PSP_COD_PRO_SER_CD ASC) (455)
  • 40. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2776 tabela XXXXXADV cursor: (select sem cursor) Texto SQL Original SELECT PSP_PRO_SER_CTO_CD FROM PQPSPADV WHERE PSP_COD_PRO_CMR_CD = ? AND PSP_FEC_INI_VIG_FF <= CURRENT_DATE AND PSP_FEC_FIN_VIG_FF >= CURRENT_DATE AND PSP_ITE_BAJ_SIS_TS IS NULL AND PSP_TIM_ULT_MOD_TS IN (( SELECT MAX ( PSP_TIM_ULT_MOD_TS ) FROM PQPSPADV WHERE PSP_COD_PRO_CMR_CD = ? AND PSP_FEC_INI_VIG_FF <= CURRENT_DATE AND PSP_FEC_FIN_VIG_FF >= CURRENT_DATE AND PSP_ITE_BAJ_SIS_TS IS NULL))
  • 41. Eccox/QC SQL Advisor Statements do programa analisados Stmt: 2776 tabela XXXXXADV cursor: (select sem cursor) Texto SQL Alterado SELECT A.PSP_PRO_SER_CTO_CD FROM ATISOWN.PQPSPADV A WHERE A.PSP_COD_PRO_CMR_CD = ? AND A.PSP_FEC_INI_VIG_FF <= CURRENT_DATE AND A.PSP_FEC_FIN_VIG_FF >= CURRENT_DATE AND A.PSP_ITE_BAJ_SIS_TS IS NULL AND A.PSP_TIM_ULT_MOD_TS IN ( SELECT MAX ( B.PSP_TIM_ULT_MOD_TS ) FROM ATISOWN.PQPSPADV B WHERE B.PSP_COD_PRO_CMR_CD = A.PSP_COD_PRO_CMR_CD AND B.PSP_FEC_INI_VIG_FF = A.PSP_FEC_INI_VIG_FF AND B.PSP_FEC_FIN_VIG_FF = A.PSP_FEC_FIN_VIG_FF AND B.PSP_ITE_BAJ_SIS_TS = A.PSP_ITE_BAJ_SIS_TS)