Guia de performance para o desenvolvimento em ABAP no banco de dados SAP HANA

No centro da plataforma SAP HANA, está o banco de dados em memória SAP HANA. Diferentemente de outros sistemas de gerenciamento de banco de dados no mercado, o SAP HANA processa tanto cargas de trabalho transacionais como analíticas, ajudando os aplicativos a focarem apenas nas informações que precisam e gerando respostas imediatas a consultas complexas. Mas devemos lembrar que o desempenho de um programa é, na maioria das vezes, determinado pela capacidade de leitura do banco de dados.

Por isso, é importante que você conheça as recomendações de desempenho do sistema de banco de dados, para que os programas demonstrem um alto nível de performance. E pensando em ajudá-lo nesta questão, preparamos um guia de performance para o desenvolvimento em ABAP do banco de dados SAP HANA. Confira a seguir:

As “5 regras de ouro”

Um desenvolvedor ABAP que já tenha anos de experiência no assunto provavelmente já tem conhecimento das diretrizes de desempenho clássicas usadas no Open SQL. Mas, em relação a essas diretrizes, o que é alterado no contexto do SAP HANA? Antes de respondermos esta pergunta, consideraremos as orientações de desempenho existentes, que são conhecidas como as “5 regras de ouro”. Veja-as:

1. Mantenha o conjunto de resultados pequeno

  • Não recuperar linhas do banco de dados e descartá-las no servidor de aplicativos utilizando CHECK ou EXIT, em loops de SELECT;
  • Faça a cláusula WHERE o mais específico possível.

2. Minimizar a quantidade de dados transferidos

  • Usar SELECT com uma lista de campo ao invés de SELECT*, a fim de transferir apenas as colunas que você realmente precisa;
  • Usar as funções de agregação (COUNT, MIN, MAX, SUM, AVG) em vez de transferir todas as linhas para o servidor de aplicativos.

3. Minimizar o número de transferências de dados

  • Usar JOINs e/ou sub-consultas, em vez de loops aninhados SELECT;
  • Use SELECT … FOR ALL ENTRIES, em vez de lotes de SELECTs or SELECT SINGLES;
  • Usar variantes de matriz como INSERT, UPDATE, MODIFY, e DELETE.

4. Minimizar a sobrecarga de pesquisa

  • Definir e utilizar índices secundários apropriados.

5. Manter a carga longe da base de dados

  • Evitar ler dados de forma redundante;
  • Usar buffer de tabela (se possível) e não ignorá-lo;
  • Classificar os dados em seus programas ABAP.

Como recomendação geral, todas estas orientações ainda são válidas para o banco de dados SAP HANA. Elas existem no código ABAP, tanto no formato padrão como personalizado, e são executadas no SAP HANA sem modificações. Contudo, as prioridades de algumas normas irão mudar, já que alguns aspectos são menos importantes. Mas lembrando que elas não representam novas oportunidades para o ajuste do desempenho do SAP HANA que não eram possíveis no passado.

As recomendações de desempenho adaptadas

Abaixo, listamos algumas recomendações adaptadas ao SAP HANA:

Minimizar o número de transferências de dados

Assim como em todos os sistemas de bancos de dados, existe uma sobrecarga de desempenho diretamente associada a cada acesso à base de dados para a manipulação da conexão, análise SQL, execução do plano de determinação, entre outros. As seguintes orientações devem ser priorizadas no SAP HANA:

  • Para as operações de modificação (INSERT, UPDATE, DELETE) usando operações de matriz, dar preferência às operações individuais ao alterar muitos registros de dados;
  • Loops de SELECT aninhados devem ser evitados ou substituídos, se possível:

Alterando a única instrução aninhada SELECT para uma construção SQL apropriada, como por exemplo, FOR ALL ENTRIES, JOIN e sub-consulta;

Evitando o acesso repetido para os mesmos dados via SQL;

Usando o buffer da tabela ABAP.

Minimizar a sobrecarga de pesquisa

Para reduzir o consumo de memória principal e melhorar o desempenho da inserção, todos os índices secundários e não exclusivos de bancos de dados existentes em tabelas de colunas são removidos durante a migração ou não criados no decorrer da instalação para todos os sistemas AS ABAP de SAP NetWeaver 7.4 em diante. Contudo, em determinados casos, o uso de índices secundários pode ser benéfico, principalmente em consultas altamente seletivas sobre campos-chave não primários. Estas consultas podem ser melhoradas por índices em campos individuais mais seletivos.

Manter a carga longe da base de dados

Esta diretriz recebeu um novo nome: “mantenha a carga longe do banco de dados, mas empurre cálculos intensivos de dados para onde for aplicável no banco de dados”. Isso porque, no SAP HANA, mover cálculos intensivos de dados na base de dados é algo benéfico. Contudo, não recomenda-se executar as mesmas operações de maneira redundante, como por exemplo, em contextos de usuários diferentes ou etapas distintas de diálogos do mesmo usuário.

Para o SAP HANA, as recomendações de triagem permanecem como antes. Se a base de dados não utiliza o mesmo índice para classificar a seleção, então ela pode ser, em determinadas situações, mais eficiente para classificar o servidor de aplicações. Porém, se a ordenação for parte da determinação do conjunto de resultados ou de uma lógica de cálculo maior, esta operação deve ser feita no SAP HANA.

Quais dessas recomendações você já segue ao desenvolver em ABAP o banco de dados SAP HANA? Há alguma dica ou questionamento que queira compartilhar conosco? Deixe-a nos comentários!

 

 

 

 


Voltar