Compartilhar via


Recomendações para otimizar o desempenho de dados

Aplica-se a esta recomendação da lista de verificação de eficiência de desempenho bem arquitetada: Power Platform

Educação Física:08 Otimizar o desempenho de dados. Otimizar os armazenamentos de dados para o uso pretendido e real na carga de trabalho.

Este guia descreve as recomendações para otimizar o desempenho de dados. Otimizar o desempenho dos dados consiste em refinar a eficiência com que a carga de trabalho processa e armazena os dados. Cada operação, transação ou computação de carga de trabalho geralmente depende da recuperação, processamento e armazenamento rápidos e precisos de dados. Quando o desempenho dos dados é otimizado, a carga de trabalho é executada sem problemas. O desempenho de dados comprometido cria um efeito dominó de baixa eficiência de desempenho. A falha em otimizar o desempenho dos dados resulta em atrasos na resposta, latência aumentada e escalabilidade reduzida. Isso compromete a eficiência de toda a carga de trabalho.

Definições

Termo Definição
Armazenamento de dados Um recurso que armazena dados como um banco de dados, armazenamento de objetos ou compartilhamento de arquivo.
Index Uma estrutura de banco de dados que fornece acesso rápido aos itens.
Processamento analítico on-line (OLAP) Uma tecnologia que organiza grandes bancos de dados de negócios, oferece suporte a análises complexas e executa consultas analíticas complexas sem afetar negativamente os sistemas transacionais.
Processamento de transações on-line (OLTP) Uma tecnologia que registra as interações comerciais conforme elas ocorrem nas operações diárias de uma organização.
Particionamento O processo de divisão física dos dados em armazenamentos de dados separados.
Ajuste de consulta Um processo que otimiza a velocidade de uma consulta ao banco de dados.

Estratégias-chave de design

Para otimizar o uso de dados, certifique-se de que os armazenamentos de dados estejam otimizados para o uso pretendido e para o uso real em uma carga de trabalho. O uso otimizado de dados pode melhorar o desempenho da consulta, reduzir o consumo de recursos e melhorar a eficiência geral do sistema. Considere as seguintes estratégias:

  • Dados do perfil. Compreenda os dados e certifique-se de que o modelo de dados seja adequado para a sua carga de trabalho. Considere fatores como normalização de dados e técnicas de particionamento. Para uma recuperação de dados eficiente, garanta que você seleciona os tipos de dados apropriados e defina relacionamentos entre tabelas.

  • Otimizar desempenho de consulta. Analisar e otimizar consultas executadas na carga de trabalho. Use técnicas como otimização de consulta e cache. Use exibições do lado do servidor para pré-filtrar dados. Para identificar gargalos, utilize ferramentas de monitoramento de desempenho e faça as melhorias necessárias.

  • Monitore e ajuste o sistema regularmente. Monitore continuamente o desempenho de sua carga de trabalho e itere na configuração do armazenamento de dados e nas otimizações de consulta. Com base nas melhores práticas de ajuste de desempenho, analise métricas do sistema, identifique áreas de melhoria e implemente as alterações. À medida que os dados aumentam, talvez seja necessário atualizar suas consultas para que elas permaneçam eficientes.

Dados do perfil

A criação de perfil de dados envolve examinar os dados de uma fonte e coletar informações sobre eles. O objetivo é compreender a qualidade, a estrutura e as características dos dados da carga de trabalho. Esse processo permite a identificação de problemas como valores ausentes, duplicatas, formatos inconsistentes e outras anomalias.

Para uma criação de perfil de dados eficaz, considere as seguintes estratégias:

  • Entender a estrutura de dados. Examine a estrutura de seus dados, incluindo tabelas, colunas e relacionamentos. Determine os tipos de dados, comprimentos e restrições que são aplicados a cada coluna. A avaliação da estrutura de dados ajuda a entender como os dados são organizados e como se relacionam com outros elementos de dados.

  • Analisar o volume de dados. Avalie o volume de dados para compreender o tamanho geral e os padrões de crescimento. Determine o número de registros ou documentos e o tamanho de tabelas ou coleções individuais. Essas informações ajudam a estimar os requisitos de armazenamento e identificar problemas de escalabilidade.

  • Identificar os relacionamentos de dados. Explore as relações entre os elementos de dados. Entenda como os dados estão conectados, de modo que você possa determinar como as alterações em uma tabela ou documento podem afetar os dados relacionados.

  • Avaliar qualidade de dados. Avalie a qualidade de seus dados examinando fatores como integridade, precisão, consistência e exclusividade. Identifique anomalias de dados, valores ausentes ou registros duplicados que possam afetar a integridade dos dados e o desempenho da consulta. Este etapa ajuda a identificar áreas para limpeza e melhoria de dados.

  • Capturar distribuição de dados. Analise a distribuição de valores dentro de cada coluna para determinar padrões de dados. Identifique valores frequentes e raros, exceções e distorções de dados. Para otimizar o desempenho da consulta, analise se as chaves alternativas seriam apropriadas para fornecer melhor desempenho.

Monitorar desempenho de dados

O monitoramento do desempenho dos dados é a prática de acompanhar consistentemente a eficiência dos armazenamentos de dados. Ele envolve a coleta e a análise de métricas de desempenho específicas para operações de dados, usando ferramentas personalizadas para soluções de monitoramento em nível de sistema, específicas de banco de dados ou de terceiros. O monitoramento de desempenho dos dados eficaz permite que você identifique e mitigue proativamente possíveis gargalos, garantindo que os processos e tarefas relacionados aos dados sejam eficientes.

Para monitorar o desempenho de dados, considere as seguintes estratégias:

  • Colete métricas específicas de dados. Colete as principais métricas diretamente relacionadas ao desempenho dos dados. Essas métricas incluem tempos de resposta de consulta e taxa de transferência de dados.

  • Configurealertas de dados. Configure alertas específicos para métricas de dados. Use limites predefinidos ou anomalias nessas métricas para disparar alertas. Os alertas permitem que você receba notificações quando as métricas de desempenho excedem os intervalos aceitáveis ou mostram comportamento anormal; por exemplo, se uma consulta de banco de dados demorar mais do que o esperado ou se a taxa de transferência de dados cair significativamente. Você pode configurar esses alertas usando ferramentas de monitoramento especializadas ou scripts personalizados.

  • Diagnosticar problemas de desempenho dos dados. Revise regularmente as métricas de dados coletadas para identificar possíveis gargalos de desempenho ou degradação nas operações de dados. Ferramentas de visualização ou painéis podem ser inestimáveis nesse processo, ajudando a destacar tendências, gargalos e exceções no desempenho dos dados. Uma vez identificados, investigue as causas raiz desses problemas e planeje as etapas de correção apropriadas.

Dados da partição

O particionamento envolve a divisão de grandes conjuntos de dados ou cargas de trabalho de alto volume em subconjuntos menores, gerenciáveis. O particionamento aumenta a eficiência do desempenho dos dados, distribuindo a carga de trabalho e melhorando o processamento paralelo. Isso também garante um acesso mais efetivo aos dados com base em necessidades específicas e padrões de consulta. Você pode particionar dados verticalmente ou horizontalmente (também chamado de fragmentação). Por exemplo, se estiver usando tabelas elásticas do Dataverse, considere qual deve ser a chave de particionamento.

Estratégia Definição Exemplo Casos de uso
Particionamento vertical Divida uma tabela em tabelas menores selecionando colunas ou campos específicos para cada partição. Cada partição representa um subconjunto dos dados completos. Se você tiver uma tabela com as colunas A, B, C e D, poderá criar uma tabela com as colunas A e B e outra com as colunas C e D. - Uma tabela contém muitas colunas, mas as consultas não acessam todas as colunas juntas.
- Algumas colunas são maiores que outras e separá-las pode aumentar o desempenho de E/S.
- Diferentes partes de dados têm diversos padrões de acesso.
Particionamento horizontal Divida dados com base em linhas ou intervalos de valores (também conhecido como fragmentação). Cada partição contém um subconjunto de linhas com características semelhantes. Se você tiver uma tabela com linhas de 1 a 1000, poderá criar uma partição com linhas de 1 a 500 e outra com linhas de 501 a 1000. - Um conjunto de dados é muito grande para um único local ou servidor.
- Os dados são acessados com base em intervalos ou filtros específicos.
- Necessidade de distribuir a carga de trabalho entre nós físicos ou servidores para melhorar o desempenho.

Para particionar seus dados, considere as seguintes etapas:

  • Analisar dados e consultas. Analise dados e padrões de consulta para identificar estratégias adequadas de particionamento ou de fragmentação. Entenda a natureza dos dados, os padrões de acesso e os requisitos de distribuição.

  • Determinar uma chave. Escolha uma chave de particionamento ou fragmentação para distribuir dados entre partições ou fragmentos. Selecione a chave cuidadosamente com base nas características de dados e requisitos de consulta.

  • Determinar a lógica. Determine uma lógica de particionamento ou fragmentação com base na chave escolhida. Pense em dividir os dados em intervalos, aplicar algoritmos de hash ou usar outras técnicas de particionamento.

Otimizar consultas

A otimização de consultas refina as consultas para reduzir os dados qualificados e os dados retornados. Esses ajustes aumentam a eficiência e a velocidade da recuperação de dados. Como resultado, o banco de dados tem uma carga de trabalho mais leve, os recursos funcionam com mais eficiência e os usuários desfrutam de interações mais tranquilas.

Para otimizar as consultas de banco de dados, considere as seguintes estratégias:

  • Reescrever consultas. Revise e analise consultas complexas para identificar oportunidades de reescrevê-las. Considere reestruturar a lógica de consulta, eliminar operações redundantes ou simplificar a sintaxe de consulta.

  • Evite o problema de consulta N+1. Minimize o número de viagens de ida e volta ao banco de dados usando junções e busca em lote para recuperar dados relacionados com eficiência.

  • Reordenar junções. Avalie e considere reorganizar a ordem de junção para minimizar o número de linhas em cada operação de junção. A ordem na qual você ingressa nas tabelas pode afetar o desempenho da consulta.

  • Consultas de cache. Armazene os resultados de consultas executadas com frequência para facilitar a reutilização. O cache de consulta elimina a necessidade de executar repetidamente a mesma consulta e reduz a sobrecarga de processamento de consultas.

  • Monitorar e ajustar. Monitore métricas de desempenho da consulta, como tempo de execução, utilização de recursos e taxa de transferência da consulta. Use ferramentas de criação de perfil de banco de dados e funcionalidades de monitoramento para identificar consultas de baixo desempenho. Use essas informações para otimizar o desempenho da consulta.

Arquivar e limpar dados

O arquivamento e a limpeza são estratégias que agilizam o armazenamento de dados. O arquivamento realoca dados mais antigos e acessados com menos frequência para um armazenamento mais econômico. A limpeza permanente dos dados remove os dados redundantes. Ambos os métodos contribuem para a eficiência do desempenho, reduzindo o volume de dados, aumentando a velocidade de acesso a dados e reduzindo os tempos de backup e recuperação.

  • Redução do volume de dados: Menos dados significam tempos de processamento mais rápidos, garantindo respostas rápidas às solicitações dos usuários.
  • Aumento da velocidade de acesso aos dados: Um conjunto de dados reduzido permite consultas e recuperação de dados mais rápidas, otimizando a capacidade de resposta do sistema.
  • Redução dos tempos de backup e recuperação: os conjuntos de dados Smaller agilizam os processos de backup e restauração, minimizando o tempo de inatividade e garantindo um desempenho consistente.

O arquivamento e a limpeza são fundamentais para manter o pico de eficiência de desempenho em sistemas orientados por dados.

Otimizar a carga de armazenamento

Otimizar a carga de armazenamento significa simplificar as solicitações ao sistema de armazenamento. Ele ajuda a eliminar solicitações desnecessárias, aprimora a recuperação de dados e evita sobrecarregar o sistema de armazenamento. A otimização da carga de armazenamento garante que o sistema de armazenamento permaneça respondendo a solicitações legítimas e mantenha o desempenho máximo. Implementar estratégias para reduzir a carga de processamento sobre o armazenamento de dados. Para otimizar a carga de armazenamento de dados, considere as estratégias a seguir.

Usar cache

O cache armazena os dados comumente acessados em uma área de armazenamento de acesso rápido, tornando a recuperação de dados mais rápida do que extraí-los da fonte principal. Essa técnica aumenta o desempenho dos dados, reduzindo os tempos de acesso e evitando buscas repetitivas de dados. O cache melhora as velocidades de leitura e os tempos de resposta do usuário, especialmente para dados acessados com frequência. Esse método é mais eficaz em dados estáticos ou dados que raramente mudam.

Para garantir a eficiência ideal do cache, considere fatores como políticas de expiração, estratégias de remoção e gerenciamento do tamanho do cache. Ajuste as configurações, como o tempo de vida útil (TTL), para obter o desempenho ideal. Para usar um cache para otimizar a carga de armazenamento, considere as seguintes estratégias:

  • Cache na memória: Execute o cache na memória para armazenar dados acessados com frequência na memória para recuperação rápida. Você pode usar essa técnica para dados de aplicativos que são caros para calcular ou recuperar um banco de dados. O cache na memória é útil para dados que você lê com frequência, mas não muda com frequência. Por exemplo, você pode usar variáveis em fluxos da nuvem ou coleções em aplicativos de tela para armazenar dados em cache.

  • Cache de consulta de banco de dados: use esta técnica para armazenar em cache os resultados de consultas de banco de dados para evitar executar a mesma consulta várias vezes. O cache de consulta do banco de dados é útil para consultas de banco de dados complexas e demoradas. Quando você armazena em cache os resultados de uma consulta, as solicitações subsequentes para a mesma consulta são retornadas rapidamente. Considere também usar exibições do servidor sempre que possível para pré-filtrar dados, a fim de restringir dados relevantes para sua consulta.

  • Cache de rede de distribuição de conteúdo: use esta técnica para armazenar em cache o conteúdo da web em servidores de rede distribuídos para reduzir a latência e melhorar a distribuição de conteúdo. O cache da rede de distribuição de conteúdo é eficaz para conteúdo estático, como imagens, arquivos CSS e arquivos JavaScript. As redes de distribuição de conteúdo armazenam cópias do conteúdo em vários locais em todo o mundo, para que os usuários possam acessar o conteúdo de um servidor próximo geograficamente.

Otimizar atualizações de dados

A otimização das atualizações de dados envolve a avaliação das atualizações de dados que são executadas para garantir seu desempenho. As atualizações podem afetar o desempenho mais do que outras operações porque podem disparar trabalho desnecessário e causar conflitos de bloqueio.

Para avaliar como otimizar as atualizações de dados, considere:

  • Alterações de dados. Otimize a automação para usar pré-imagens dos dados ou filtros para minimizar o trabalho quando nenhuma alteração real tiver ocorrido. Evite acionar a automação para dados não modificados.

  • Automação. Avalie quando e como as atualizações são disparadas com base nas alterações de dados e otimize os gatilhos para incluir um filtro. Por exemplo, para disparar a automação somente quando um campo específico na fonte de dados for modificado. Avalie atualizações que disparam incrementalmente automações várias vezes. Em vez disso, considere se você pode criar uma operação personalizada para lidar com todo o processamento. Por exemplo, se um pedido for enviado, a data do envio e o número de rastreamento forem atualizados separadamente, ambos poderão ser atualizados ao mesmo tempo em uma operação "ShipOrder" personalizada.

  • Impasses. Avalie operações de atualização lenta que podem estar causando problemas devido a vários fluxos que atualizam os mesmos dados em sequências diferentes. Essa ineficiência pode levar a conflitos de bloqueio ou até mesmo possíveis deadlocks, resultando em retrabalho desnecessário. Atualize os diferentes recursos na mesma sequência para minimizar a contenção.

  • Atualizações em massa. Se você executar operações em várias linhas de uma tabela, considere o uso de operações em massa.

Otimize a movimentação e o processamento de dados

Otimizar a movimentação e o processamento de dados envolve melhorar a eficiência e o desempenho das operações relacionadas à extração, transformação, carregamento e processamento de dados. Pense nos seguintes aspectos-chave da otimização da movimentação e do processamento de dados:

  • Otimização de extração, transformação e carga (ETL): otimize os processos ETL para minimizar o tempo de processamento. Você pode simplificar o processo de extração, implementar algoritmos de transformação eficientes e otimizar o processo de carregamento. Ao tornar cada etapa eficiente, você otimiza o fluxo de trabalho geral.

  • Processamento paralelo: Use técnicas de processamento paralelo para melhorar o desempenho. Ao distribuir tarefas de processamento de dados em vários threads ou nós, você pode dividir e processar a carga de trabalho simultaneamente, o que resulta em um processamento rápido.

  • Processamento em lote: agrupe tarefas semelhantes para reduzir a sobrecarga causada por operações repetidas. Processe várias tarefas em um lote para reduzir o tempo de processamento geral.

Design para proximidade de dados

A proximidade dos dados refere-se ao posicionamento estratégico dos dados mais próximos dos usuários ou serviços que os acessam com mais frequência. Reduzir a distância física ou lógica entre os dados e seus usuários garante acesso mais rápido aos dados e melhor capacidade de resposta. Para otimizar o design para maior proximidade, considere estas estratégias:

  • Avalie os padrões de acesso aos dados: avalie os padrões de acesso da sua carga de trabalho e os dados acessados com frequência. Essa análise pode ajudar a determinar onde colocar os dados para obter o máximo benefício.

  • Escolha soluções que suportem a realocação de dados: considere soluções que ofereçam realocação dinâmica de dados com base em padrões de acesso variáveis, garantindo o posicionamento ideal dos dados.

  • Escolha soluções que suportem sincronização de dados: se você estiver atendendo a uma base de usuários distribuída, escolha soluções que permitam a sincronização de dados entre várias regiões, para garantir que as réplicas de dados estejam disponíveis próximas aos usuários.

Compensação: Se os dados subjacentes mudarem com frequência, implemente um mecanismo de invalidação de cache para garantir que os dados armazenados em cache permaneçam atualizados.

Facilitação do Power Platform

Monitorar o desempenho dos dados: para monitorar o desempenho dos dados, considere usar o Azure Monitor para coletar e analisar métricas de infraestrutura, logs e dados de aplicativos. Você pode integrar o Monitor com outros serviços como Application Insights. O Application Insights fornece monitoramento de desempenho de aplicativos e oferece suporte a muitas plataformas.

O Application Insights coleta dados de uso e desempenho. Você pode usar o Log Analytics para correlacionar esses dados com dados de configuração e desempenho nos recursos do Azure. O fluxo de dados do Application Insights para Dataverse atualmente fornece dados de desempenho relacionados a chamadas recebidas da API do Dataverse, chamadas de execução de plug-in do Dataverse e chamadas de SDK do Dataverse.

Otimize os padrões de dados de consulta em aplicativos Canvas: Siga as orientações e sugestões documentadas. Consulte Padrões de dados de consulta otimizados no Power Apps.

Otimize a forma como você está personalizando, estendendo ou integrando com Dataverse: Siga as práticas recomendadas e orientações documentadas. Consulte Melhores práticas e orientação ao usar o Microsoft Dataverse.

Otimize consultas de banco de dados e desempenho de índice: use o recurso de insights de desempenho de consulta do Banco de Dados SQL do Azure para otimizar consultas, tabelas e bancos de dados. Você também pode usar esse recurso para identificar e solucionar problemas de desempenho de consulta.

Para bancos de dados relacionais, siga as diretrizes de design de índice, Diretrizes de índice do SQL Server e Diretrizes de índice do Azure Cosmos DB. Use o Banco de dados SQL para executar o ajuste automático das consultas para melhorar o desempenho.

Para bancos de dados SQL, você deve reorganizar ou recriar índices regularmente. Identificar consultas lentas e ajustá-las para melhorar o desempenho. Muitos mecanismos de banco de dados têm recursos de ajuste de consulta. Para obter mais informações, consulte as melhores práticas de desempenho de consulta.

O Azure Cosmos DB tem uma política de indexação padrão que indexa todas as propriedades de cada item e impõe índices de intervalo para qualquer cadeia de caracteres ou número. Essa política proporciona um desempenho de consulta eficiente e você não precisa gerenciar índices com antecedência.

Otimizar a carga de armazenamento: Muitos serviços de banco de dados do Azure oferecem suporte a réplicas de leitura. A disponibilidade e a configuração de réplicas de leitura variam dependendo do serviço de banco de dados do Azure. Consulte a documentação oficial de cada serviço para entender os detalhes e as opções.

Lista de verificação Eficiência de Desempenho

Consulte o conjunto completo de recomendações.