Analisar o desempenho da consulta

Esta página descreve como usar o painel do Query insights para detectar e analisar problemas de desempenho.

Visão geral do Query Insights

O Query Insights ajuda você a detectar e diagnosticar consultas e instrução DML problemas de desempenho em um banco de dados do Spanner. Ele oferece suporte a controles monitoramento e fornece informações de diagnóstico que ajudam você a ir além para identificar a causa raiz dos problemas de desempenho.

Os insights de consulta ajudam a melhorar o desempenho das consultas do Spanner orientando-o pelas seguintes etapas:

  1. Confirme se as consultas ineficientes são responsáveis pelo alto uso da CPU.
  2. Identificar uma consulta ou tag potencialmente problemática.
  3. Analisar a tag de consulta ou de solicitação para identificar problemas.

Os insights de consulta estão disponíveis em uma única região e em várias regiões personalizadas.

Preços

Não há custo extra para o Query Insights.

Retenção de dados

A retenção máxima de dados do Query Insights é de 30 dias. Para o gráfico Utilização total da CPU (por tag de consulta ou solicitação), os dados são retirado das tabelas SPANNER_SYS.QUERY_STATS_TOP_*, que têm um máximo de retenção por 30 dias. Consulte Retenção de dados. para saber mais.

Funções exigidas

Você vai precisar de diferentes papéis e permissões do IAM, dependendo se se você for um usuário do IAM ou um usuário de controle de acesso refinado.

Usuário do Identity and Access Management (IAM)

Para ter as permissões necessárias para acessar a página "Insights de consulta", peça ao administrador para conceder a você os seguintes papéis do IAM na instância:

As seguintes permissões do papel Leitor de banco de dados do Cloud Spanner (roles/spanner.databaseReader) são necessárias para acessar a página "Insights de consulta":

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Usuário de controle de acesso granular

Se você é um usuário de controle de acesso refinado, certifique-se de:

  • Tenha o Leitor do Cloud Spanner(roles/spanner.viewer)
  • Têm privilégios de controle de acesso refinados e recebem o spanner_sys_reader função do sistema ou uma das funções de membro dele.
  • Selecione a função de membro ou spanner_sys_reader como sua função atual do sistema na página de visão geral do banco de dados.
.

Para mais informações, consulte Sobre controle de acesso detalhado e Papéis refinados do sistema de controle de acesso.

Painel de insights de consulta

O painel "Insights de consulta" mostra a carga da consulta com base no e o intervalo de tempo que você selecionar. A carga de consulta mede o tamanho Uso da CPU para todas as consultas na instância no intervalo de tempo selecionado. O painel tem uma série de filtros que ajudam a conferir a carga da consulta.

Para visualizar o painel do Query Insights para um banco de dados, faça o seguinte:

  1. Selecione Insights de consulta no painel de navegação à esquerda. O O painel de insights de consulta é aberto.
  2. Selecione um banco de dados na lista Bancos de dados. O painel mostra as informações de carregamento de consulta para o banco de dados.

As áreas do painel incluem:

  1. Lista de bancos de dados: filtra a carga da consulta em um banco de dados específico ou em todos. bancos de dados.
  2. Filtro de intervalo de tempo: filtra a carga da consulta por períodos, como horas, dias ou um período personalizado.
  3. Gráfico de Utilização total da CPU (todas as consultas): exibe a carga agregada. de todas as consultas.
  4. Gráfico de Utilização total da CPU (por tag de consulta ou solicitação): exibe a CPU utilização por cada tag de consulta ou solicitação.
  5. Tabela de tags e consultas TopN: exibe a lista das principais consultas e solicitações tags classificadas por utilização de CPU. Consulte Identifique uma consulta ou tag potencialmente problemática.

Painel de insights de consulta

Desempenho do painel

Use parâmetros de consulta ou inclua tags nas consultas para otimizar o desempenho do Query Insights. Se você não definir parâmetros ou marcar suas consultas, muitos resultados podem retornar, o que pode causar a tabela de consultas e tags TopN não carregar corretamente.

Confirme se as consultas ineficientes são responsáveis pela alta utilização da CPU

A utilização total da CPU é uma medida do trabalho (em segundos da CPU) que o que as consultas executadas no banco de dados selecionado sejam realizadas ao longo do tempo.

Uso total da CPU para todas as consultas

Analise o gráfico para analisar estas questões:

  • Qual banco de dados está passando pela carga? Selecionar bancos de dados diferentes a lista de bancos de dados para encontrar os bancos de dados com as cargas mais altas. Para descobrir qual banco de dados tem a carga mais alta, você também pode analisar o Gráfico Uso da CPU: total para bancos de dados no Console do Google Cloud.

    Carga do banco de dados

  • O uso da CPU é alto? O gráfico está piscando ou aumentando ao longo do tempo? Caso não veja alta utilização da CPU, o não está nas suas consultas.

  • Há quanto tempo o uso da CPU tem sido alto? Ele teve um aumento recente ou teve tem sido consistentemente alta por algum tempo? Use o seletor de intervalo para selecionar vários períodos para descobrir quanto tempo durou o problema. Aumente o zoom para visualizar um janela de tempo em que os picos de carga da consulta são observados. Diminua o zoom para ver até uma semana na linha do tempo.

Caso haja um pico ou uma elevação no gráfico que corresponda à instância geral o uso da CPU, provavelmente devido a uma ou mais consultas caras. Em seguida, você podemos nos aprofundar identificando uma tag de consulta ou solicitação potencialmente problemática.

Identifique uma consulta ou tag de solicitação potencialmente problemática

Para identificar uma tag de consulta ou solicitação potencialmente problemática, observe a seção de consultas TopN:

Consultas TopN

Aqui vemos que a consulta com FPRINT 6815864236081503267 tem um alto uso da CPU e pode ser problemática.

A tabela Consultas TopN apresenta uma visão geral das consultas que usam o mais CPU durante a janela de tempo escolhida, classificada do maior para o menor. O número das consultas TopN são limitadas a 100.

Para os gráficos, buscamos os dados da tabela de estatísticas de consulta TopN, que tem três granularidade: 1 min, 10 min e 1 hora. O valor de cada ponto de dados nos gráficos representa o valor médio em um intervalo de um minuto.

Uma prática recomendada é adicionar tags às consultas SQL. A codificação de consulta ajuda a encontrar problemas em construções de nível superior, como lógica de negócios ou um microsserviço.

Tabela de consultas TopN

A tabela mostra as seguintes propriedades:

  • FPRINT: hash da tag de solicitação, se houver. caso contrário, o hash consulta.
  • Tag de consulta ou solicitação: se a consulta tiver uma tag associada, o valor A tag de solicitação é mostrada. Estatísticas para várias consultas que têm a mesma tag são agrupadas em uma única linha com o valor REQUEST_TAG correspondente ao string da tag. Para saber mais sobre o uso das tags de solicitação, consulte Solução de problemas com tags de solicitação e de transação.

    Se a consulta não tiver uma tag associada, a consulta SQL será truncada para aproximadamente 64 KB, é mostrado. Para a DML em lote, as instruções SQL são simplificadas em uma única linha e concatenados, usando um delimitador de ponto e vírgula. Consecutiva textos SQL idênticos são eliminados antes do truncamento.

  • Tipo de consulta: indica se uma consulta é PARTITIONED_QUERY ou QUERY. Um PARTITIONED_QUERY é uma consulta com um partitionToken recebido do API PartitionQuery. Todas as outras consultas e instruções DML são indicadas pelo tipo de consulta QUERY.

  • Utilização da CPU: consumo de recursos da CPU por uma consulta, como uma porcentagem de o total de recursos de CPU usados por todas as consultas em execução nos bancos de dados em esse intervalo de tempo, mostrado em uma barra horizontal com um intervalo de 0 a 100.

  • CPU (%): consumo de recursos da CPU por uma consulta, como uma porcentagem da total de recursos de CPU usados por todas as consultas em execução nos bancos de dados do em um intervalo de tempo maior.

  • Contagem de execuções: número de vezes que o Spanner viu a consulta durante no intervalo.

  • Latência média (ms): tempo médio, em microssegundos, para cada consulta no banco de dados. Essa média exclui a codificação e o tempo de transmissão do conjunto de resultados e a sobrecarga.

  • Média de linhas verificadas: o número médio de linhas que a consulta verificou, excluindo valores excluídos.

  • Média de linhas retornadas: o número médio de linhas retornadas pela consulta.

  • Bytes retornados: número de bytes de dados que a consulta retornou, excluindo a sobrecarga de codificação de transmissão.

Possível variação entre os gráficos

Talvez você note alguma variação entre Utilização total da CPU (todas as consultas) e o gráfico Utilização total da CPU (por tag de consulta ou solicitação). são duas coisas que podem levar a esse cenário:

  • Diferentes fontes de dados: os dados do Cloud Monitoring, que alimentam a O gráfico de Utilização total da CPU (todas as consultas) geralmente é mais preciso porque é enviada a cada minuto e tem um período de armazenamento de 45 dias. No outro os dados da tabela do sistema, que alimentam a utilização total da CPU (por consulta ou tag de solicitação) podem ser calculados em média ao longo de 10 minutos (ou 1 hora). Nesse caso, podemos perder dados de alta granularidade que aparecem na tabela de uso total da CPU (todas as consultas).

  • Janelas de agregação diferentes: os dois gráficos têm agregação diferente. janelas. Por exemplo, ao inspecionar um evento com mais de seis horas, consulte a tabela SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE. Nesse caso, um evento que ocorre às 10:01 seria agregado em 10 minutos e seria presente na tabela do sistema correspondente ao carimbo de data/hora 10:10.

A captura de tela a seguir mostra um exemplo dessa variação.

Variação entre gráficos

Analisar uma consulta ou tag de solicitação específica

Para determinar se uma consulta ou tag de solicitação é a causa raiz do problema, clique em a tag de consulta ou de solicitação que parece ter a maior carga ou é levando mais tempo do que as outras. É possível selecionar várias consultas e tags de solicitação por vez.

É possível manter o ponteiro do mouse sobre o gráfico para consultas na linha do tempo para saber o uso de CPU (em segundos).

Para restringir o problema, observe o seguinte:

  • Quanto tempo a carga tem sido alta? Está alta no momento? Ou faz muito tempo? Altere os períodos para encontrar a data e a hora em que consulta começou a ter baixo desempenho.
  • Houve picos no uso da CPU? Você pode alterar a janela de tempo para o histórico de uso de CPU da consulta.
  • Qual é o consumo de recursos? Como ele se relaciona com outras consultas? Olhe a tabela e compare os dados de outras consultas com a selecionada. Há uma grande diferença?

Para confirmar que a consulta selecionada está contribuindo para a alta utilização da CPU, é possível detalhar o formato da consulta específica (ou tag de solicitação) e analisá-lo posteriormente na página "Detalhes da consulta".

Exibir a página "Detalhes da consulta"

Para visualizar os detalhes de uma forma de consulta específica ou tag de solicitação em um formato gráfico, clique na FPRINT associada à tag de consulta ou solicitação. A página "Detalhes da consulta" é aberta.

Página "Detalhes da consulta"

A página "Detalhes da consulta" mostra as seguintes informações:

  1. Texto de detalhes da consulta: texto da consulta SQL, truncado para aproximadamente 64 KB. As estatísticas de várias consultas que têm a mesma string de tag são agrupadas em uma única linha com REQUEST_TAG correspondente à string dessa tag. Somente o texto de uma dessas consultas é mostrada neste campo. Para DML em lote, o conjunto de SQL instruções são achatadas em uma única linha, concatenadas usando um ponto e vírgula delimitador. A duplicação de textos SQL consecutivos e idênticos é eliminada antes truncamento.
  2. Os valores dos seguintes campos:
    • Contagem de execuções: número de vezes que o Spanner viu a consulta durante o intervalo.
    • Média de CPU (ms): consumo médio de recursos da CPU, em milissegundos, por um consulta dos recursos de CPU da instância em um intervalo de tempo.
    • Média de Latência (ms): tempo médio, em milissegundos, para cada a execução de consultas no banco de dados. Essa média exclui a codificação e tempo de transmissão do conjunto de resultados e sobrecarga.
    • Média de linhas retornadas: o número médio de linhas retornadas pela consulta.
    • Média de linhas verificadas: o número médio de linhas que a consulta verificou. excluindo os valores excluídos.
    • Média de bytes: número de bytes de dados que a consulta retornou, excluindo a sobrecarga de codificação de transmissão.
  3. Gráfico de amostras de planos de consulta: cada ponto no gráfico representa uma o plano de consulta em um horário específico e a latência de consulta específica. Clique em uma das opções os pontos no gráfico para visualizar o plano de consulta e visualizar as etapas percorridas durante a execução da consulta. Observação: os planos de consulta não são compatíveis com consultas com partiçãoTokens da API PartitionQuery e Consultas DML particionadas.
  4. Visualizador do plano de consulta: mostra o plano de consulta de amostra selecionado. Cada nó, ou card, no gráfico representa um iterador que consome linhas de seu de entrada e produz linhas para o pai. É possível clicar em cada iterador para informações expandidas.
  5. Gráfico de latência de consulta: mostra o valor da latência de uma consulta em um determinado período. além da latência média.
  6. Gráfico de utilização da CPU: mostra a utilização da CPU por uma consulta. em porcentagem ao longo de um período. Também mostra a utilização média da CPU.
  7. Contagem de execuções/gráfico com falha: mostra a contagem de execuções de um da consulta durante um período e o número de vezes que a execução dela falhou.
  8. Gráfico de linhas verificadas: mostra o número de linhas que a consulta verificada durante um período.
  9. Gráfico de linhas retornadas: mostra o número de linhas que a consulta retornada ao longo de um período.
  10. Filtro de período: filtra detalhes da consulta por períodos, como hora, dia ou um intervalo personalizado.

Para os gráficos, buscamos os dados da tabela de estatísticas de consulta TopN, que tem três granularidades diferentes: 1 minuto, 10 minutos e 1 hora. O valor de cada o ponto de dados nos gráficos representa o valor médio em um intervalo de um minuto.