Esta página descreve como usar o painel de insights de consulta para detectar e analisar problemas de desempenho do Spanner.
Visão geral dos insights de consulta
Os insights de consulta ajudam a detectar e diagnosticar problemas de desempenho de consultas e
instruções DML (INSERT
, UPDATE
e DELETE
)
em um banco de dados do Spanner. Ele oferece suporte a
monitoramento intuitivo e fornece informações de diagnóstico que ajudam você a ir além da detecção, para identificar a causa raiz dos problemas de desempenho.
Os insights de consulta ajudam a melhorar o desempenho da consulta do Spanner, orientando você pelas seguintes etapas:
- Confirme se consultas ineficientes são responsáveis pelo alto uso da CPU.
- Identificar uma consulta ou tag potencialmente problemática.
- Analise a consulta ou a tag de solicitação para identificar problemas.
Os insights de consulta estão disponíveis em configurações de região única e multirregional.
Preços
Não há custo extra para gerar o Query insights.
Retenção de dados
A retenção máxima de dados para os insights de consulta é de 30 dias.
No gráfico Uso total da CPU (por tag de consulta ou solicitação), os dados são
extraídos das tabelas SPANNER_SYS.QUERY_STATS_TOP_*
, que têm uma retenção máxima
de 30 dias. Consulte Retenção de dados
para saber mais.
Funções exigidas
Você precisa de diferentes papéis e permissões do IAM, dependendo se você é um usuário do IAM ou um usuário de controle de acesso refinado.
Usuário do Identity and Access Management (IAM)
Para receber as permissões necessárias para acessar a página de insights de consulta, peça ao administrador para conceder a você os seguintes papéis do IAM na instância:
-
Leitor do Cloud Spanner (
roles/spanner.viewer
) -
Leitor de banco de dados do Cloud Spanner (
roles/spanner.databaseReader
)
As seguintes permissões na função 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 com controle de acesso granular
Se você for um usuário de controle de acesso granular, confira se:
- Ter o Visualizador do Cloud Spanner(
roles/spanner.viewer
). - Ter privilégios de controle de acesso detalhado e receber a função do sistema
spanner_sys_reader
ou uma das funções de membro. - Selecione
spanner_sys_reader
ou uma função de membro como sua função atual do sistema na página de visão geral do banco de dados.
Para mais informações, consulte Sobre o controle de acesso detalhado e Papéis do sistema de controle de acesso detalhado.
Painel de insights da consulta
O painel "Query insights" mostra a carga de consulta com base no banco de dados e no período selecionado. A carga de consulta é uma medida da utilização total da CPU para todas as consultas na instância no intervalo de tempo selecionado. O painel fornece uma série de filtros que ajudam a visualizar a carga de consulta.
Para acessar o painel "Insights de consulta" de um banco de dados, faça o seguinte:
- Selecione Query Insights no painel de navegação à esquerda. O painel de insights da consulta é aberto.
- Selecione um banco de dados na lista Bancos de dados. O painel mostra as informações de carga da consulta para o banco de dados.
As áreas do painel incluem:
- Lista de bancos de dados: filtra a carga de consulta em um banco de dados específico ou em todos os bancos de dados.
- Filtro de período: filtra a carga de consulta por períodos, como horas, dias ou um intervalo personalizado.
- Gráfico "Total CPU Utilization (All queries)": mostra a carga agregada de todas as consultas.
- Gráfico de uso total da CPU (por tag de consulta ou solicitação): mostra a utilização da CPU por cada tag de consulta ou solicitação.
- Tabela de consultas e tags TopN: mostra a lista das principais consultas e tags de solicitação, classificadas pela utilização da CPU. Consulte Identificar uma consulta ou tag potencialmente problemática.
Desempenho do painel de controle
Use parâmetros de consulta ou etiqueteie suas consultas para otimizar a performance dos insights de consulta. Se você não parametrizar ou marcar suas consultas, poderá receber muitos resultados, o que pode fazer com que as consultas TopN e a tabela de tags não carreguem corretamente.
Confirmar se consultas ineficientes são responsáveis pela alta utilização da CPU
A utilização total da CPU é uma medida do trabalho (em segundos de CPU) que as consultas executadas no banco de dados selecionado realizam ao longo do tempo.
Analise o gráfico para responder a estas perguntas:
Qual banco de dados está passando pela carga? Selecione diferentes bancos de dados na lista "Bancos de dados" para encontrar os bancos de dados com as cargas mais altas. Para descobrir qual banco de dados tem a maior carga, você também pode analisar o gráfico Utilização da CPU - total para bancos de dados no console do Google Cloud .
A utilização da CPU é alta? O gráfico está piscando ou aumentando ao longo do tempo? Se você não notar uma alta utilização da CPU, o problema não está nas consultas.
Há quanto tempo a utilização da CPU está alta? Ela aumentou recentemente ou tem sido consistentemente alta por algum tempo? Use o seletor de intervalo para selecionar vários períodos e descobrir por quanto tempo o problema durou. Aumente o zoom para visualizar uma janela de tempo em que os picos de carga de consulta são observados. Diminua o zoom para ver até uma semana na linha do tempo.
Se você notar um pico ou uma elevação no gráfico correspondente ao uso geral da CPU da instância, provavelmente é devido a uma ou mais consultas caras. Em seguida, você pode se aprofundar na jornada de depuração identificando uma tag de consulta ou solicitação potencialmente problemática.
Identificar uma tag de consulta ou solicitação potencialmente problemática
Para identificar uma consulta ou tag de solicitação potencialmente problemática, observe a seção de consultas TopN:
Aqui, vemos que a consulta com FPRINT 6815864236081503267
tem uma alta utilização
de CPU e pode ser problemática.
A tabela TopN queries fornece uma visão geral das consultas que usam mais CPU durante a janela de tempo escolhida, classificadas da maior para a menor. O número de consultas TopN é limitado a 100.
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 ponto de dados nos gráficos representa o valor médio em um intervalo de um minuto.
Como prática recomendada, você pode adicionar tags às suas consultas SQL. A inclusão de tag de consulta ajuda a encontrar problemas em construções de alto nível, como na lógica de negócios ou em um microsserviço.
A tabela mostra as seguintes propriedades:
- FPRINT: hash da tag de solicitação, se presente. Caso contrário, o hash da consulta.
Tag de consulta ou solicitação: se a consulta tiver uma tag associada, a tag de solicitação será mostrada. As estatísticas de várias consultas que têm a mesma string de tag são agrupadas em uma única linha com o valor
REQUEST_TAG
correspondente à string de tag. Para saber mais sobre o uso de 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, truncada para aproximadamente 64 KB, será mostrada. Na DML em lote, as instruções SQL são achatadas em uma única linha e concatenadas, usando um delimitador ponto e vírgula. Textos SQL idênticos consecutivos são eliminados antes do truncamento.
Tipo de consulta: indica se uma consulta é
PARTITIONED_QUERY
ouQUERY
. UmaPARTITIONED_QUERY
é uma consulta com umpartitionToken
obtido da API PartitionQuery. Todas as outras consultas e instruções DML são indicadas pelo tipo de consultaQUERY
.Uso da CPU: consumo de recursos da CPU por uma consulta, como uma porcentagem do total de recursos da CPU usados por todas as consultas executadas nos bancos de dados nesse 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 do total de recursos da CPU usados por todas as consultas executadas nos bancos de dados nesse intervalo de tempo.
Contagem de execuções: número de vezes que o Spanner encontrou a consulta durante o intervalo.
Latência média (ms): tempo médio, em microssegundos, para cada execução de consulta no banco de dados. Essa média exclui o tempo de codificação e transmissão do conjunto de resultados e também a sobrecarga.
Média de linhas verificadas: é o número médio de linhas que a consulta verificou, com exceção dos valores excluídos.
Média de linhas retornadas: o número médio de linhas que a consulta retornou.
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ê perceba alguma variação entre o gráfico Uso total da CPU (todas as consultas) e o gráfico Uso total da CPU (por tag de consulta ou solicitação). Há duas coisas que podem levar a esse cenário:
Diferentes fontes de dados: os dados do monitoramento do Cloud, que alimentam o gráfico "Utilização total da CPU (todas as consultas)", geralmente são mais precisos porque são enviados a cada minuto e têm um período de armazenamento de 45 dias. Por outro lado, os dados da tabela do sistema, que alimentam o gráfico "Uso total da CPU" (por tag de consulta ou solicitação), podem ser uma média de 10 minutos (ou 1 hora). Nesse caso, podemos perder dados de alta granularidade que aparecem no gráfico "Uso total da CPU" (todas as consultas).
Janelas de agregação diferentes: os dois gráficos têm janelas de agregação diferentes. Por exemplo, ao inspecionar um evento com mais de 6 horas, faríamos uma consulta na tabela
SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE
. Nesse caso, um evento que ocorre às 10h01 é agregado em 10 minutos e fica presente na tabela do sistema correspondente ao carimbo de data/hora de 10h10.
A captura de tela a seguir mostra um exemplo dessa variação.
Analisar uma tag de consulta ou solicitação específica
Para determinar se uma consulta ou tag de solicitação é a causa raiz do problema, clique na consulta ou tag de solicitação que parece ter a carga mais alta ou que está demorando mais que as outras. É possível selecionar várias consultas e solicitar tags ao mesmo tempo.
É possível manter o ponteiro do mouse no gráfico para consultas na linha do tempo e conhecer a utilização da 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? Mude os intervalos de tempo para encontrar a data e a hora em que a consulta começou a apresentar baixo desempenho.
- Houve picos de uso da CPU? É possível mudar a janela de tempo para estudar a utilização histórica da CPU para a consulta.
- Qual é o consumo de recursos? Como ele se relaciona com outras consultas? Analise a tabela e compare os dados de outras consultas com a selecionada. Há alguma diferença importante?
Para confirmar que a consulta selecionada está contribuindo para a alta utilização da CPU, você pode analisar os detalhes da forma de consulta específica (ou tag de solicitação) e analisar mais na página "Detalhes da consulta".
Acessar a página "Detalhes da consulta"
Para conferir os detalhes de uma forma de consulta ou tag de solicitação específica em um formato gráfico, clique no FPRINT associado à tag de consulta ou solicitação. A página "Detalhes da consulta" é aberta.
A página "Detalhes da consulta" mostra as seguintes informações:
- 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 a essa string de tag. Somente o texto de uma dessas consultas é mostrado neste campo. Para a DML em lote, o conjunto de instruções SQL é achatado em uma única linha, concatenado usando um delimitador de ponto e vírgula. Textos SQL idênticos consecutivos são eliminados antes do truncamento.
- Os valores dos seguintes campos:
- Contagem de execuções: número de vezes que o Spanner encontrou a consulta durante o intervalo.
- CPU média (ms): consumo médio de recursos da CPU, em milissegundos, por uma consulta dos recursos da CPU da instância em um intervalo de tempo.
- Latência média (ms): duração média, em milissegundos, para cada execução de consulta no banco de dados. Essa média exclui o tempo de codificação e transmissão do conjunto de resultados e também a sobrecarga.
- Média de linhas retornadas: é o número médio de linhas que a consulta retornou.
- Média de linhas verificadas: é o número médio de linhas que a consulta verificou, excluindo os valores excluídos.
- Bytes médios: número de bytes de dados que a consulta retornou, excluindo a sobrecarga de codificação de transmissão.
- Gráfico de amostras de planos de consulta: cada ponto no gráfico representa um plano de consulta amostral em um momento específico e a latência de consulta específica. Clique em um dos pontos no gráfico para conferir o plano de consulta e as etapas realizadas durante a execução da consulta. Observação: os planos de consulta não são aceitos para consultas com partitionTokens obtidos da API PartitionQuery e consultas DML particionada.
- Visualizador do plano de consulta: mostra o plano de consulta selecionado. Cada nó, ou card, no gráfico representa um iterador que consome linhas das entradas e produz linhas para o pai. É possível clicar em cada iterador para abrir informações detalhadas.
- Gráfico de latência da consulta: mostra o valor da latência da consulta para uma consulta selecionada em um período. Ele também mostra a latência média.
- Gráfico de uso da CPU: mostra a utilização da CPU por uma consulta, em porcentagem, durante um período. Ele também mostra a utilização média da CPU.
- Contagem de execuções/gráfico de falhas: mostra a contagem de execuções de uma consulta em um período e o número de vezes que a execução da consulta falhou.
- Gráfico de linhas verificadas: mostra o número de linhas que a consulta verificou em um período.
- Gráfico de linhas retornadas: mostra o número de linhas que a consulta retornou em um período.
- Filtro de período: filtra os 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 ponto de dados nos gráficos representa o valor médio em um intervalo de um minuto.
Pesquisar todas as execuções de uma consulta no registro de auditoria
Para pesquisar todas as execuções de uma impressão digital de consulta específica nos Registros de auditoria do Cloud, faça uma consulta no registro de auditoria e procure qualquer query_fingerprint
que corresponda ao campo FPRINT
na tabela de estatísticas de consulta TopN. Para mais informações, consulte a Visão geral dos registros de consulta e visualização. Use esse método para identificar o usuário que iniciou a consulta.