Melhore o desempenho das consultas através das estatísticas de consultas

Esta página descreve como usar o painel de controlo de estatísticas de consultas para detetar e analisar problemas de desempenho. Para uma vista geral desta funcionalidade, consulte o artigo Vista geral das estatísticas de consultas.

Pode usar o Gemini Cloud Assist para ajudar a monitorizar e resolver problemas dos seus recursos do AlloyDB. Para mais informações, consulte o artigo Monitorize e resolva problemas com a assistência do Gemini.

Antes de começar

Se você ou outros utilizadores precisarem de ver o plano de consulta ou realizar o rastreio ponto a ponto, tem de ter autorizações específicas da gestão de identidade e de acesso (IAM) para o fazer. Pode criar uma função personalizada e adicionar-lhe as autorizações de IAM necessárias. Em seguida, pode adicionar esta função a cada conta de utilizador que usa as estatísticas de consultas para resolver um problema. Consulte o artigo Crie uma função personalizada.

A função personalizada tem de ter a seguinte autorização de IAM: cloudtrace.traces.get.

Abra o painel de controlo Estatísticas de consultas

Para abrir o painel de controlo Estatísticas de consultas, siga estes passos:

  1. Na lista de clusters e instâncias, clique numa instância.
  2. Clique em Aceder às estatísticas de consultas para ver informações mais detalhadas sobre as consultas e o desempenho abaixo do gráfico de métricas na página Vista geral do cluster ou selecione o separador Estatísticas de consultas no painel de navegação do lado esquerdo.

Na página seguinte, pode usar as seguintes opções para filtrar os resultados:

  1. Seletor de instâncias. Permite-lhe selecionar a instância principal ou as instâncias do conjunto de leitura no cluster. Por predefinição, a instância principal está selecionada. Os detalhes apresentados são agregados para todas as instâncias do conjunto de leitura ligadas e os respetivos nós.
  2. Base de dados. Filtra a carga de consultas numa base de dados específica ou em todas as bases de dados.
  3. Utilizador. Filtra o carregamento de consultas de contas de utilizador específicas.
  4. Endereço do cliente. Filtra a carga de consultas de um endereço IP específico.
  5. Intervalo de tempo. Filtra a carga de consultas por intervalos de tempo, como hora, dia, semana ou um intervalo personalizado.
O painel de controlo de estatísticas de consultas oferece um seletor de instâncias e
            menus pendentes para bases de dados, utilizadores e endereços. À direita
            dos menus pendentes, existe um filtro para definir um intervalo de tempo.

Edite a configuração das estatísticas de consultas

As estatísticas de consultas estão ativadas por predefinição nas instâncias do AlloyDB. Pode editar a configuração predefinida das estatísticas de consultas.

Para editar a configuração das estatísticas de consultas de uma instância do AlloyDB, siga estes passos:

Consola

  1. Na Google Cloud consola, aceda à página Clusters.

    Aceda a Clusters

  2. Clique num cluster na coluna Nome do recurso.

  3. Clique em Estatísticas de consultas no painel de navegação do lado esquerdo.

  4. Selecione Principal ou Conjunto de leitura na lista Estatísticas de consultas e, de seguida, clique em Editar.

  5. Edite os campos Estatísticas de consultas:

    1. Para alterar o limite predefinido de 1024 bytes nos comprimentos das consultas para o AlloyDB analisar, no campo Comprimentos das consultas, introduza um número entre 256 e 4500.

      A instância é reiniciada depois de editar este campo.

      Nota: os limites de comprimento das consultas mais elevados requerem mais memória.

    2. Para personalizar os conjuntos de funcionalidades das estatísticas de consultas, ajuste as seguintes opções:

      • Amostragem do plano de consulta: selecione esta caixa de verificação para visualizar as operações usadas para concluir uma amostra de uma consulta. A taxa de amostragem determina o número máximo de consultas que o AlloyDB pode amostrar por minuto para a instância por nó.

        No campo Taxa de amostragem máxima, introduza um número entre 1 e 20. Por predefinição, a taxa de amostragem está definida como 5. Para desativar a amostragem, desmarque a caixa de verificação Amostragem do plano de consulta.

      • Armazenar endereços IP do cliente: selecione esta caixa de verificação para saber de onde se originam as suas consultas e para agrupar essas informações para executar métricas.

      • Armazenar etiquetas de aplicações: selecione esta caixa de verificação para saber que aplicações etiquetadas estão a fazer pedidos e para agrupar essas informações para executar métricas. Para mais informações sobre as etiquetas de aplicação, consulte a especificação.

  6. Clique em Atualizar instância.

gcloud

Para ativar as estatísticas de consultas para uma instância do AlloyDB através de comandos da Google Cloud CLI, faça o seguinte:

  1. Instale a CLI Google Cloud.
  2. Para inicializar a CLI gcloud, execute o seguinte comando:
    gcloud init
    
  3. Se estiver a usar um shell local, crie credenciais de autenticação local para a sua conta de utilizador:

    gcloud auth application-default login
    

    Não precisa de o fazer se estiver a usar o Cloud Shell.

    Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Segue-se um exemplo:

gcloud alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--insights-config-query-string-length=QUERY_LENGTH \
--insights-config-query-plans-per-minute=QUERY_PLANS \
--insights-config-record-application-tags \
--insights-config-record-client-address

Substitua o seguinte:

  • INSTANCE: o ID da instância a atualizar
  • CLUSTER: o ID do cluster da instância
  • PROJECT: o ID do projeto do cluster
  • REGION: a região do cluster, por exemplo, us-central1
  • QUERY_LENGTH: o comprimento da consulta, que varia entre 256 e 4500
  • QUERY_PLANS: o número de planos de consulta a configurar por minuto.

Além disso, use uma ou mais das seguintes flags opcionais:

  • --insights-config-query-string-length: define o limite de comprimento da consulta predefinido para um valor especificado de 256 a 4500 bytes. O comprimento da consulta predefinido é de 1024 bytes. Os comprimentos de consultas mais elevados são mais úteis para consultas analíticas, mas também requerem mais memória. A alteração da duração da consulta requer que reinicie a instância. Pode continuar a adicionar etiquetas a consultas que excedam o limite de comprimento.
  • --insights-config-query-plans-per-minute: por predefinição, é captado um máximo de cinco amostras de planos de consultas executadas por minuto em todas as bases de dados na instância. Altere este valor para um número entre 1 e 20. Para desativar a amostragem, introduza 0. É provável que o aumento da taxa de amostragem lhe dê mais pontos de dados, mas pode adicionar uma sobrecarga de desempenho.
  • --insights-config-record-client-address: armazena os endereços IP dos clientes de onde provêm as consultas e ajuda a agrupar esses dados para executar métricas com base neles. As consultas provêm de mais do que um anfitrião. A revisão dos gráficos de consultas de endereços IP de clientes pode ajudar a identificar a origem de um problema. Se não quiser armazenar endereços IP de clientes, use --no-insights-config-record-client-address.
  • --insights-config-record-application-tags: armazena etiquetas de aplicações que ajudam a determinar as APIs e os trajetos de modelo-vista-controlador (MVC) que estão a fazer pedidos e agrupa os dados para executar métricas em função dos mesmos. Esta opção requer que comente as consultas com um conjunto específico de etiquetas. Se não quiser armazenar etiquetas de aplicações, use --no-insights-config-record-application-tags.

Terraform

Para usar o Terraform para configurar as estatísticas de consultas, use o recurso google_alloydb_instance.

Segue-se um exemplo:

  query_insights_config {
    query_string_length = QUERY_STRING_LENGTH_VALUE
    record_application_tags = RECORD_APPLICATION_TAG_VALUE
    record_client_address = RECORD_CLIENT_ADDRESS_VALUE
    query_plans_per_minute = QUERY_PLANS_PER_MINUTE_VALUE5
  }
  

Substitua o seguinte:

  • QUERY_STRING_LENGTH_VALUE: comprimento da string de consulta. O valor predefinido é 1024. Qualquer número inteiro entre 256 e 4500 é válido.
  • RECORD_APPLICATION_TAG_VALUE: registe a etiqueta de aplicação para uma instância. O valor predefinido é true.
  • RECORD_CLIENT_ADDRESS_VALUE: registar a morada do cliente para uma instância. O valor predefinido é true.
  • QUERY_PLANS_PER_MINUTE_VALUE: o número de planos de execução de consultas capturados pelas Estatísticas por minuto para todas as consultas combinadas. O valor predefinido é 5. Qualquer número inteiro entre 0 e 20 é válido.

    Para saber como aplicar ou remover uma configuração do Terraform, consulte o artigo Comandos básicos do Terraform.

    A configuração de exemplo da instância com a configuração de estatísticas de consultas adicionada deve aparecer da seguinte forma:

    resource "google_alloydb_instance" "instance_name" {
    provider = "google-beta"
    cluster       = google_alloydb_cluster.default.name
    instance_id   = "instance_id"
    instance_type = "PRIMARY"
    
    machine_config {
     cpu_count = 8
    }
    
    query_insights_config {
    query_string_length = 1024
    record_application_tags = false
    record_client_address = false
    query_plans_per_minute = 5
    }
    
    depends_on = [google_alloydb_instance.default]
    }
    

REST v1

Este exemplo configura as definições de observabilidade na sua instância do AlloyDB. Para ver uma lista completa de parâmetros para esta chamada, consulte Método: projects.locations.clusters.instances.patch.

Para configurar as definições das estatísticas de consultas, modifique os campos opcionais conforme necessário. Para ver uma lista completa dos campos desta chamada, consulte QueryInsightsInstanceConfig.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • CLUSTER_ID: o ID do cluster que cria. Tem de começar com uma letra minúscula e pode incluir letras minúsculas, números e hífenes.
  • PROJECT_ID: o ID do projeto onde quer colocar o cluster.
  • LOCATION_ID: o ID da região do cluster.
  • INSTANCE_ID: o nome da instância principal que quer criar.

Para modificar a configuração da instância, use o seguinte pedido PATCH:

PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=observabilityConfig.enabled}

O corpo JSON do pedido que configura todos os campos de observabilidade tem o seguinte aspeto:

{
  "queryStringLength": integer,
  "recordApplicationTags": boolean,
  "recordClientAddress": boolean,
  "queryPlansPerMinute": integer
}

Melhore o desempenho das consultas

As estatísticas de consultas resolvem problemas de consultas do AlloyDB para procurar problemas de desempenho. O painel de controlo de estatísticas de consultas mostra a carga de consultas com base nos fatores que selecionar. A carga de consultas é uma medição do trabalho total para todas as consultas na instância no intervalo de tempo selecionado.

As estatísticas de consultas ajudam a detetar e analisar problemas de desempenho de consultas. Para resolver problemas com consultas através das estatísticas de consultas, siga estes passos:

Veja o carregamento da base de dados para todas as consultas

O painel de controlo de estatísticas de consultas de nível superior mostra o gráfico Carga da base de dados: todas as principais consultas com dados filtrados. A carga de consultas da base de dados é uma medida do trabalho (em segundos de CPU) que as consultas executadas na base de dados selecionada realizam ao longo do tempo. Cada consulta em execução está a usar ou a aguardar recursos de CPU, recursos de E/S ou recursos de bloqueio. A carga de consultas da base de dados é a relação entre a quantidade de tempo gasto por todas as consultas que são concluídas num determinado período e o tempo real.

Mostra o gráfico de carga da base de dados com uma carga para a capacidade da CPU, a CPU e
         o tempo de espera da CPU, o tempo de espera de E/S e o tempo de espera de bloqueio.

As linhas coloridas no gráfico mostram a carga de consultas, dividida em quatro categorias:

  • Capacidade da CPU: o número de CPUs disponíveis na instância.
  • CPU e CPU Wait: a proporção do tempo gasto pelas consultas num estado ativo em relação ao tempo real. As esperas de E/S e bloqueio não bloqueiam as consultas que se encontram num estado ativo. Esta métrica pode significar que a consulta está a usar a CPU ou a aguardar que o agendador do Linux agende o processo do servidor que executa a consulta enquanto outros processos estão a usar a CPU.

    Nota: a carga da CPU tem em conta o tempo de execução e o tempo de espera para que o agendador do Linux agende o processo do servidor em execução. Como resultado, a carga da CPU pode ultrapassar o limite máximo de núcleos.

  • IO Wait: a proporção do tempo gasto pelas consultas que estão à espera de IO em relação ao tempo real. O tempo de espera de E/S inclui o tempo de espera de E/S de leitura e o tempo de espera de E/S de escrita. Consulte a tabela de eventos do PostgreSQL. Se quiser uma discriminação das informações para as esperas de E/S, pode vê-las no Cloud Monitoring. Para mais informações, consulte os gráficos de métricas.

  • Tempo de espera de bloqueio: a proporção do tempo gasto pelas consultas que estão à espera de bloqueios em relação ao tempo real. Inclui Lock Waits, LwLock Waits e Buffer pin Lock waits. Se quiser uma discriminação das informações sobre as esperas de bloqueio, pode vê-las no Cloud Monitoring. Para mais informações, consulte os gráficos de métricas.

Em seguida, reveja o gráfico e use as opções de filtragem para responder a estas perguntas:

  1. A carga de consultas é elevada? O gráfico está a aumentar ou a ficar elevado ao longo do tempo? Se não vir uma carga elevada, o problema não está nas suas consultas.
  2. Há quanto tempo é que a carga está elevada? Só está alto agora? Ou tem estado elevado durante muito tempo? Use a seleção de intervalo para selecionar vários períodos para saber há quanto tempo o problema ocorre. Em alternativa, pode aumentar o zoom para ver um período em que se observam picos de carga de consultas. Pode reduzir o zoom para ver até uma semana da cronologia.
  3. O que está a causar a carga elevada? Pode selecionar opções para analisar a capacidade da CPU, a CPU e a espera da CPU, a espera de bloqueio ou a espera de E/S. O gráfico de cada uma destas opções tem uma cor diferente para que possa ver qual tem o carregamento mais elevado. A linha azul escura no gráfico mostra a capacidade máxima da CPU do sistema. Permite-lhe comparar a carga de consultas com a capacidade máxima do sistema de CPU. Esta comparação ajuda a saber se uma instância está a ficar sem recursos de CPU.
  4. Que base de dados está a sofrer a carga? Selecione bases de dados diferentes no menu pendente Bases de dados para encontrar as bases de dados com os carregamentos mais elevados.
  5. Existem utilizadores ou endereços IP específicos a causar cargas mais elevadas? Selecione diferentes utilizadores e endereços nos menus pendentes para comparar quais estão a causar cargas mais elevadas.

Filtre o carregamento da base de dados

As secções Consultas e etiquetas permitem-lhe filtrar ou ordenar o carregamento de consultas para uma consulta selecionada ou uma etiqueta de consulta SQL.

Filtre por consultas

A tabela QUERIES oferece uma vista geral das consultas que causam a maior carga de consultas. A tabela mostra todas as consultas normalizadas para o período e as opções selecionadas no painel de controlo Estatísticas de consultas.

Por predefinição, a tabela ordena as consultas pelo tempo de execução total no intervalo de tempo selecionado.

Mostra o gráfico de carga da base de dados com uma carga para consultas, com filtros selecionados para capacidade da CPU, CPU e tempo de espera da CPU, tempo de espera de E/S e tempo de espera de bloqueio.

Para filtrar a tabela, selecione uma propriedade em Filtrar consultas. Para ordenar a tabela, selecione um cabeçalho de coluna. A tabela mostra as seguintes propriedades:

  • String de consulta. A string de consulta normalizada. As estatísticas de consultas só mostram 1024 carateres na string de consulta por predefinição.

    As consultas etiquetadas como UTILITY COMMAND incluem normalmente comandos BEGIN, COMMIT e EXPLAIN ou comandos de contentor.

  • Base de dados. A base de dados na qual a consulta foi executada.

  • Carregamento por tempo total/Carregamento por CPU/Carregamento por tempo de espera de E/S/Carregamento por tempo de espera de bloqueio. Estas opções permitem-lhe filtrar consultas específicas para encontrar a carga mais elevada para cada opção.

  • Tempo de execução médio (ms). O tempo total que todas as subtarefas demoram em todos os trabalhadores paralelos a concluir a consulta. Para mais informações, consulte o artigo Tempo e duração médios de execução.

  • Número de vezes que foi chamado. O número de vezes que a consulta foi chamada pela aplicação.

  • Média de linhas obtidas. O número médio de linhas obtidas para a consulta.

As estatísticas de consultas apresentam consultas normalizadas, ou seja, $1, $2, etc., substituem os valores constantes literais. Por exemplo:

UPDATE
  "demo_customer"
SET
  "customer_id" = $1::uuid,
  "name" = $2,
  "address" = $3,
  "rating" = $4,
  "balance" = $5,
  "current_city" = $6,
  "current_location" = $7
WHERE
  "demo_customer"."id" = $8

O valor da constante é ignorado para que as estatísticas de consultas possam agregar consultas semelhantes e remover quaisquer informações de PII que a constante possa apresentar.

Filtre por etiquetas de consulta

Para resolver problemas de uma aplicação, primeiro tem de adicionar etiquetas às suas consultas SQL.

As estatísticas de consultas oferecem monitorização centrada na aplicação para diagnosticar problemas de desempenho de aplicações criadas com ORMs.

Se for responsável por toda a pilha de aplicações, as estatísticas de consultas fornecem a monitorização de consultas a partir de uma vista da aplicação. A etiquetagem de consultas ajuda a encontrar problemas em construções de nível superior, como a utilização da lógica de negócio, um microsserviço ou alguma outra construção. Pode etiquetar as consultas pela lógica empresarial, por exemplo, usando as etiquetas de pagamento, inventário, estatísticas empresariais ou envio. Em seguida, pode encontrar a carga de consultas para a qual os vários tipos de lógica empresarial são criados. Por exemplo, pode encontrar eventos inesperados, como picos para uma etiqueta de estatísticas de uma empresa às 13:00. Em alternativa, pode ver um crescimento inesperado de um serviço de pagamento que é tendência na semana anterior.

As etiquetas de carregamento de consultas fornecem uma discriminação do carregamento de consultas da etiqueta selecionada ao longo do tempo.

Para calcular o carregamento da base de dados para a etiqueta, as estatísticas de consultas usam a quantidade de tempo gasto por cada consulta que usa a etiqueta selecionada. As estatísticas de consultas calculam o tempo de conclusão no limite dos minutos com base no tempo do relógio.

No painel de controlo de estatísticas de consultas, selecione ETIQUETAS para ver a tabela de etiquetas. A tabela ETIQUETAS ordena as etiquetas pelo respetivo carregamento total por tempo total.

A Figura 5 mostra o painel de controlo Estatísticas de consultas, com o carregamento de etiquetas.
         Abaixo do gráfico, encontra uma lista de etiquetas.

Pode ordenar a tabela selecionando uma propriedade em Filtrar consultas ou clicando num cabeçalho de coluna. A tabela mostra as seguintes propriedades:

  • Ação, controlador, framework, trajeto, aplicação, controlador de BD. Cada propriedade que adicionou às suas consultas é apresentada como uma coluna. Tem de adicionar, pelo menos, uma destas propriedades se quiser filtrar por etiquetas.
  • Carregamento por tempo total/Carregamento por CPU/Carregamento por tempo de espera de E/S/Carregamento por tempo de espera de bloqueio. Estas opções permitem-lhe filtrar consultas específicas para encontrar a carga mais elevada para cada opção.
  • Tempo de execução médio (ms). O tempo total que todas as subtarefas demoram em todos os trabalhadores paralelos a concluir a consulta. Para mais informações, consulte o artigo Tempo e duração médios de execução.
  • Número de vezes que foi chamado. O número de vezes que a consulta foi chamada pela aplicação.
  • Média de linhas obtidas. O número médio de linhas obtidas para a consulta.
  • Base de dados. A base de dados na qual a consulta foi executada.

Examine uma consulta ou uma etiqueta específica

Para determinar se uma consulta ou uma etiqueta é a causa principal do problema, faça o seguinte no separador Consultas ou no separador Etiquetas, respetivamente:

  1. Clique no cabeçalho Carregamento por tempo total para ordenar a lista por ordem descendente.
  2. Clique na consulta ou na etiqueta que parece ter o carregamento mais elevado e que está a demorar mais tempo do que as outras.

É aberto um painel de controlo que mostra os detalhes da consulta ou da etiqueta selecionada.

Se selecionou uma consulta, é apresentada uma vista geral da consulta selecionada:

Mostra uma versão truncada da consulta selecionada.

Se selecionou uma etiqueta, é apresentada uma vista geral da etiqueta selecionada.

Examine o carregamento de uma consulta ou uma etiqueta específica

O gráfico Carga da base de dados: consulta específica mostra uma medida do trabalho (em segundos de CPU) que a consulta normalizada selecionada realizou na consulta selecionada ao longo do tempo. Para calcular o carregamento, usa a quantidade de tempo que as consultas normalizadas demoram a ser concluídas no limite de minutos até à hora do relógio. Na parte superior da tabela, são apresentados os primeiros 1024 carateres da consulta normalizada (em que os literais são removidos por motivos de agregação e IIP). Tal como no gráfico de consultas totais, pode filtrar a carga de uma consulta específica por base de dados, utilizador e endereço do cliente. A carga de consultas é dividida em capacidade da CPU, CPU e espera da CPU, espera de E/S e espera de bloqueio.

Mostra os gráficos de carregamento e latência da base de dados para uma consulta específica.

O gráfico Carga da base de dados: etiquetas específicas mostra uma medida do trabalho (em segundos de CPU) que as consultas correspondentes às etiquetas selecionadas realizaram na base de dados selecionada ao longo do tempo. Tal como no gráfico de consultas totais, pode filtrar o carregamento de uma etiqueta específica por Base de dados, Utilizador e Endereço do cliente.

Mostra os gráficos de carregamento e latência da base de dados para uma consulta específica.

Examine a latência

Usa o gráfico Latência para examinar a latência na consulta ou na etiqueta. A latência é o tempo necessário para a consulta normalizada ser concluída, em tempo real. O painel de controlo de latência mostra a latência do 50.º, 95.º e 99.º percentil para encontrar comportamentos atípicos.

Mostra o gráfico de latência de consultas para uma consulta específica
         com filtros selecionados para capacidade da CPU, CPU e espera da CPU,
         espera de E/S e espera de bloqueio.

A latência das consultas paralelas é medida em tempo real, embora a carga de consultas possa ser superior para a consulta devido à utilização de vários núcleos para executar parte da consulta.

Tente restringir o problema analisando o seguinte:

  1. O que está a causar a carga elevada? Selecione opções para analisar a capacidade da CPU, a CPU e a espera da CPU, a espera de bloqueio ou a espera de E/S.
  2. Há quanto tempo é que o cárdio está elevado? Só está alto agora? Ou está alta há muito tempo? Altere os intervalos de tempo para encontrar a data e a hora em que o carregamento começou a ter um desempenho fraco.
  3. Houve picos na latência? Pode alterar o período para estudar a latência do histórico da consulta normalizada.

Quando encontrar as áreas e as horas de maior carga, pode obter mais detalhes.

Examine a latência num cluster

Use o gráfico Latência P99 na mesma consulta no cluster para examinar a latência P99 na consulta ou na etiqueta em todas as instâncias no cluster.

Mostra o gráfico de latência de consultas para uma consulta específica
         com filtros selecionados para capacidade da CPU, CPU e espera da CPU,
         espera de E/S e espera de bloqueio.

Examine as operações num plano de consulta com amostragem

Um plano de consulta usa uma amostra da sua consulta e divide-a em operações individuais. Explica e analisa cada operação na consulta. O gráfico Exemplos de planos de consulta mostra todos os planos de consulta em execução em momentos específicos e a quantidade de tempo que cada plano demorou a ser executado.

Mostra um gráfico para planos de consultas de exemplo, com a hora em que foram executados na parte inferior do gráfico (eixo X) e o número de segundos que foram executados à direita (eixo Y).

Para ver detalhes do plano de consulta de exemplo, clique nos pontos no gráfico Planos de consulta de exemplo. Existe uma vista dos planos de consultas de exemplo executados para a maioria, mas não para todas, as consultas. Os detalhes expandidos mostram um modelo de todas as operações no plano de consulta. Cada operação mostra a latência, as linhas devolvidas e o custo dessa operação. Quando seleciona uma operação, pode ver mais detalhes, como blocos de resultados partilhados, o tipo de esquema, os ciclos reais, as linhas do plano e muito mais.

O plano de consulta mostra a latência e o custo de cada operação
         executada para a consulta.

Tente restringir o problema respondendo às seguintes perguntas:

  1. Qual é o consumo de recursos?
  2. Como se relaciona com outras consultas?
  3. O consumo muda ao longo do tempo?

Examine um rastreio gerado por uma consulta de amostra

Além de ver o plano de consulta de exemplo, pode usar as estatísticas de consultas para ver um rastreio de aplicação completo e contextualizado para uma consulta de exemplo. Este rastreio pode ajudar a identificar a origem de uma consulta problemática através da apresentação da atividade da base de dados para um pedido específico. Além disso, as entradas de registo que a aplicação envia para o Cloud Logging durante o pedido estão associadas ao rastreio, o que ajuda na sua investigação.

Para ver o rastreio no contexto, faça o seguinte:

  1. No painel Consulta de exemplo, clique no separador Rastreio ponto a ponto. Este separador apresenta um gráfico de Gantt que detalha os intervalos, que são registos de operações individuais, para o rastreio gerado pela consulta.

  2. Para ver mais detalhes sobre cada intervalo, como atributos e metadados, clique no intervalo.

Também pode ver o rastreio na página Explorador de rastreios. Para o fazer, clique em Ver no Cloud Trace. Para ver detalhes sobre como usar a página Explorador de rastreios para explorar os dados de rastreio, consulte Encontre e explore rastreios.

Adicione etiquetas a consultas SQL

A etiquetagem de consultas SQL simplifica a resolução de problemas da aplicação. Pode usar o sqlcommenter para adicionar etiquetas às suas consultas SQL de forma automática através do mapeamento objeto-relacional (ORM) ou manualmente.

Use o sqlcommenter com o ORM

Quando o ORM é usado em vez de escrever diretamente consultas SQL, pode não encontrar código de aplicação que esteja a causar desafios de desempenho. Também pode ter problemas em analisar como o código da aplicação afeta o desempenho das consultas. Para resolver esse problema, as estatísticas de consultas oferecem uma biblioteca de código aberto denominada sqlcommenter, uma biblioteca de instrumentação ORM. Esta biblioteca é útil para os programadores que usam ORMs e os administradores para detetar que código da aplicação está a causar problemas de desempenho.

Se estiver a usar o ORM e o sqlcommenter em conjunto, as etiquetas são criadas automaticamente sem ter de alterar nem adicionar código personalizado à sua aplicação.

Pode instalar o sqlcommenter no servidor de aplicações. A biblioteca de instrumentação permite que as informações da aplicação relacionadas com a sua estrutura MVC sejam propagadas para a base de dados juntamente com as consultas como um comentário SQL. A base de dados recolhe estas etiquetas e começa a registar e agregar estatísticas por etiquetas, que são ortogonais às estatísticas agregadas por consultas normalizadas. As estatísticas de consultas mostram as etiquetas para que saiba que aplicação está a causar a carga de consultas. Estas informações ajudam a encontrar o código da aplicação que está a causar problemas de desempenho.

Quando examina os resultados nos registos da base de dados SQL, estes aparecem da seguinte forma:

SELECT * from USERS /*action='run+this',
controller='foo%3',
traceparent='00-01',
tracestate='rojo%2'*/

As etiquetas suportadas incluem o nome do controlador, a rota, a framework e a ação.

O conjunto de ORMs no sqlcommenter é suportado para várias linguagens de programação:

Python
  • Django
  • psycopg2
  • Sqlalchemy
  • Frasco
Java
  • Hibernar
  • Primavera
Ruby
  • Rails
Node.js
  • Knex.js
  • Sequelize.js
  • Express.js

Para mais informações sobre o sqlcommenter e como o usar na sua framework ORM, consulte a documentação do sqlcommenter no GitHub.

Use o sqlcommenter para adicionar etiquetas manualmente

Se não estiver a usar o ORM, tem de adicionar manualmente etiquetas do SQL Commenter às suas consultas SQL. Na sua consulta, tem de aumentar cada declaração SQL com um comentário que contenha um par chave-valor serializado. Use, pelo menos, uma das seguintes teclas:

  • action=''
  • controller=''
  • framework=''
  • route=''
  • application=''
  • db driver=''

As estatísticas de consultas eliminam todas as outras chaves. Consulte a documentação do SQL Commenter para ver o formato correto dos comentários SQL.

Tempo e duração da execução

As estatísticas de consultas fornecem uma métrica de Tempo de execução médio (ms), que indica o tempo total que todas as subtarefas demoram em todos os trabalhadores paralelos a concluir a consulta. Esta métrica pode ajudar a otimizar a utilização agregada de recursos das bases de dados, encontrando e otimizando consultas que criam a sobrecarga de CPU mais elevada.

Para ver o tempo decorrido, pode medir a duração de uma consulta executando o comando \timing no cliente psql. Mede o tempo que decorre entre a receção da consulta e o envio de uma resposta pelo servidor PostgreSQL. Esta métrica pode ajudar a analisar o motivo pelo qual uma determinada consulta está a demorar demasiado tempo e decidir se a deve otimizar para ser executada mais rapidamente.

Se uma consulta for concluída com uma única thread por uma única tarefa, a duração e o tempo de execução médio permanecem iguais.

Ative as funcionalidades avançadas de estatísticas de consultas para o AlloyDB

As funcionalidades avançadas de estatísticas de consultas para o painel de controlo do AlloyDB estão integradas no painel de controlo padrão de estatísticas de consultas. Para mais informações sobre como ativar as funcionalidades de estatísticas de consultas avançadas, consulte o artigo Melhore o desempenho das consultas com as funcionalidades de estatísticas de consultas avançadas.

O que se segue?