Regras de Ouro do Acesso ao Banco de Dados.

Em programação ABAP ou em qualquer outra linguagem, devemos ter grandes preocupações com a performance, ou seja, no tempo que o programa leva para retornar algum resultado ao usuário.

Na maioria dos casos de problemas de performance em ABAP, o grande vilão é o acesso ao banco de dados. Um programa com acessoo ao banco feito de maneira não performática, não atentando para regras básicas, pode causar muita dor de cabeça quando chegar em produção.

É muito comum, um programa rodar perfeitamente bem em ambientes de desenvolvimento e chegar na produção, termos muita demora e até short dump por time out. Isso porque em desenvolvimento a quantidade de dados não é significativa. Ou seja, um relatório que retorna 100 linhas em desenvolvimento, pode retornar 500.000 em produção.

Uma série de técnicas são adotadas na hora de fazer seus acessos ao banco de dados. Para resumir, temos as 5 Regras de Ouro do Acesso ao Banco de Dados:

1 – Mantenha o número de linhas baixo.

2 – Mantenha a quantidade de dados transferido do banco de dados baixo.

3 – Mantenha o número de acessos ao banco de dados baixo.

4 – Mantenha o esforço de busca baixo.

5 – Mantenha a carga do banco de dados baixa.

Com essas 5 regrinhas na cabeça, fica fácil de identificar quando estamos fazendo um SELECT que será uma verdadeira bomba em produção.

Em posts futuros em vou detalhar os 5 itens, com exemplos e ferramentas que o R/3 nos fornece para analisar programas e identificar problemas de performance.

3 Resultados

  1. Wanderley disse:

    Porque tem que se checar if sy-subrc depois ou antes do select mesmo que não é para parar o processamento ou dar qualquer mensagem?

  2. furlan disse:

    Wanderley, não há obrigatoriedade de testar sy-subrc depois do SELECT. Você somente faz isso se for parar o processamento ou apresentar uma mensagem de erro.

    Agora, não faz o menor sentido de se verificar o sy-subrc antes do comando SELECT.

  3. Sabrina disse:

    Wanderley, no caso de vc fazer um select, e logo após outro select “for all entries”, é interessante verificar o sy-subrc ou se a tabela do select anterior está vazia… para que no “for all entries” não venham TODOS os registros…