Ir para o conteúdo

Ajuste de desempenho do Jitterbit App Builder

Introdução

O ajuste de desempenho é um processo de identificação e resolução de gargalos, começando com otimizações em nível de aplicativo antes de considerar mudanças de infraestrutura mais custosas.

Esta página abrange as principais áreas de otimização: identificação de problemas, design de aplicativos, otimização de consultas e infraestrutura.

Identificação de problemas

Para corrigir problemas de desempenho, primeiro é necessário encontrá-los. Você pode usar estas ferramentas para diagnosticar problemas:

  • Ferramentas de desenvolvedor do navegador: A maioria dos navegadores da web possui ferramentas de desenvolvedor integradas que podem ajudar a encontrar problemas do lado do cliente, como solicitações de rede que estão lentas ou falhando. Para mais informações, veja Usando Ferramentas de Desenvolvedor do Navegador.

  • Ferramentas específicas de banco de dados: Normalmente, seu sistema de banco de dados possui ferramentas para ajudá-lo a analisar e ajustar o desempenho de consultas. Por exemplo, você pode usar EXPLAIN ANALYZE no PostgreSQL ou o Database Engine Tuning Advisor no Microsoft SQL Server para inspecionar planos de execução de consultas e identificar problemas.

  • Monitoramento do App Builder: O App Builder possui monitoramento integrado e logs de banco de dados que podem fornecer insights sobre o que a aplicação está fazendo.

Otimização em nível de aplicativo

Esta seção abrange otimizações que você pode fazer dentro de sua aplicação App Builder e seu esquema de banco de dados subjacente.

Índices

Em um banco de dados, um índice melhora o desempenho de consultas ajudando o mecanismo de banco de dados a encontrar dados mais rapidamente.

Você deve examinar o código SQL do seu aplicativo e verificar se todas as colunas usadas nas cláusulas WHERE, ORDER BY ou JOIN estão devidamente indexadas. O objetivo é criar índices suficientes para acelerar suas consultas SELECT sem criar tantos que você desacelere significativamente as operações UPDATE, INSERT ou DELETE.

Aqui estão os pontos-chave sobre índices:

  • Equilibre leituras e gravações: Adicionar índices acelera consultas (leituras), mas desacelera declarações de modificação de dados (INSERT/UPDATE/DELETE). Encontre um equilíbrio que funcione para seu aplicativo.

  • Índice para ordenação e agrupamento: Considere indexar colunas usadas para ordenação (ORDER BY) e agrupamento (GROUP BY). Você também pode se beneficiar da indexação de colunas usadas em funções agregadas, como MIN(), MAX() e COUNT().

  • Índices cobertos: Um "índice coberto" inclui todas as colunas necessárias para uma consulta específica. Isso pode ser muito eficiente, pois o banco de dados pode responder à consulta usando apenas o índice, sem precisar ler os dados da tabela. Ao criar um índice coberto, coloque as colunas usadas em comparações de igualdade (=) antes das colunas usadas em comparações de desigualdade (como > e <).

  • Encontrar índices ausentes: Você pode usar ferramentas nativas do banco de dados para encontrar índices ausentes ou não utilizados. (Para exemplos usando SQL Server, veja Encontrar índices ausentes e não utilizados no SQL Server.

Consultas

As seguintes dicas podem ajudar a melhorar o desempenho da sua consulta:

  • Escreva cláusulas WHERE amigáveis a índices: Evite usar funções em colunas indexadas, pois isso pode impedir que o banco de dados utilize o índice. Por exemplo:

    Esta consulta é lenta porque a função LOWER() impede que o banco de dados use um índice na coluna FirstName. O banco de dados deve escanear cada linha.

    WHERE LOWER(FirstName) LIKE '%bob%'
    

    Esta consulta é rápida porque pode usar um índice para encontrar linhas correspondentes diretamente.

    WHERE FirstName LIKE 'Bob%'
    
  • Selecione apenas as colunas necessárias: Evite usar SELECT *. Ao selecionar apenas as colunas que seu aplicativo precisa, você reduz a quantidade de dados que precisa ser processada e enviada pela rede. Isso é especialmente importante para subconsultas.

  • Simplifique a lógica complexa: Revise e reescreva consultas que se tornaram excessivamente complexas ou aninhadas. Sempre que possível, reutilize subconsultas ou divida a lógica complexa em partes menores e mais gerenciáveis.

Objetos de negócios

Objetos de negócios podem, às vezes, causar problemas de desempenho. Estes são os pontos a considerar ao analisar objetos de negócios para problemas de desempenho suspeitos:

  • Carregamento de dados: O App Builder carrega todas as colunas de um objeto de negócios se o painel usar qualquer um dos seguintes:

    • Formatação condicional.

    • Um campo com Suporte à Substituição habilitado.

    • Quaisquer regras de visibilidade não estáticas.

    Esteja ciente desse comportamento ao projetar painéis complexos.

  • Uso de campos:

    • Evite incluir campos binários em um objeto de negócios, a menos que o campo esteja sendo usado por um painel (como para upload ou download de arquivos).

    • Considere criar objetos de negócios dedicados que contenham campos binários apenas para painéis que realmente precisem deles.

    • Certifique-se de usar o tipo de dado correto para as colunas. Por exemplo, use INT para números e TIMESTAMP para datas, em vez de VARCHAR ou TEXT. Isso reduz o tamanho de armazenamento e melhora a velocidade das consultas.

  • Impacto na UI: Mesmo que a consulta de um objeto de negócios seja rápida, o usuário pode experimentar um comportamento lento do aplicativo. Você deve verificar outras coisas que podem impactar a velocidade, como regras de ordenação complexas ou caixas de lista com um grande número de itens.

Otimização em nível de infraestrutura

Se você otimizou seus aplicativos o máximo que pode e ainda precisa de um desempenho melhor, pode considerar atualizar sua infraestrutura. Aqui estão as opções:

  • Escalonamento horizontal com balanceamento de carga: À medida que o número de usuários cresce, um único servidor web pode não conseguir lidar com a carga. O escalonamento horizontal envolve adicionar mais servidores web para processar solicitações e usar um balanceador de carga para distribuir as solicitações uniformemente entre eles. Isso não apenas melhora o desempenho, mas também aumenta a confiabilidade, pois o tráfego pode ser redirecionado se um servidor falhar.

    Nota

    O dimensionamento automático e o balanceamento de carga são recomendados para todos os ambientes hospedados na nuvem.

  • Escalonamento de banco de dados: O servidor de banco de dados pode ser um gargalo de desempenho em aplicativos de alto tráfego. Para lidar com cargas de trabalho pesadas de leitura, você pode criar réplicas de leitura. Estas são instâncias secundárias de banco de dados que contêm uma cópia dos dados do banco de dados primário. Você pode configurar seu aplicativo para enviar todas as consultas somente de leitura para essas réplicas, deixando o banco de dados primário livre para lidar com operações de gravação.

Para conjuntos de dados extremamente grandes, você pode considerar o sharding, onde um banco de dados é particionado em partes menores (shards) que são distribuídas entre vários servidores.

  • Camadas de cache: Para ambientes de produção, você deve usar um sistema de cache em memória dedicado, como Redis ou Memcached. Esses sistemas armazenam dados acessados com frequência na RAM, proporcionando tempos de recuperação muito mais rápidos do que um banco de dados. Quando seu aplicativo precisa de dados, ele primeiro verifica o cache e só consulta o banco de dados se os dados não forem encontrados. Isso pode reduzir significativamente a carga no servidor de banco de dados.

  • Alocação e monitoramento de recursos: Para garantir que seus servidores estejam dimensionados corretamente, você deve monitorar ativamente seu desempenho. Acompanhe métricas-chave, como uso de CPU, consumo de memória e I/O de disco, para identificar gargalos antes que eles impactem os usuários.

    Você deve provisionar seus servidores com CPU, RAM e armazenamento rápido (SSDs) suficientes para lidar com a carga de trabalho esperada. O escalonamento vertical (atualização para hardware mais poderoso) pode ser uma solução temporária antes que o escalonamento horizontal se torne necessário.

Solução de Problemas

Para solução de problemas relacionados, consulte o seguinte no guia de solução de problemas do App Builder: