Use insights de consulta para melhorar o desempenho da consulta

Esta página descreve como usar o painel de insights da consulta para detectar e analisar problemas de desempenho com suas consultas.

Introdução

O Query Insights ajuda a detectar, diagnosticar e prevenir problemas de desempenho de consultas em bancos de dados Cloud SQL. Ele oferece suporte a monitoramento intuitivo e fornece informações de diagnóstico que ajudam você a ir além da detecção e identificar a causa raiz dos problemas de desempenho.

Com o Query Insights, você pode monitorar o desempenho no nível do aplicativo e rastrear a origem de uma consulta problemática na pilha do aplicativo por modelo, visualização, controlador, rota, usuário e host. A ferramenta Query Insights pode ser integrada às suas ferramentas de monitoramento de aplicativos (APM) existentes e Google Cloudserviços usando padrões e APIs abertos. Dessa forma, você pode monitorar e solucionar problemas de consulta usando sua ferramenta favorita.

O Query Insights ajuda você a melhorar o desempenho das consultas do Cloud SQL, orientando você nas seguintes etapas:

Insights de consulta para a edição Cloud SQL Enterprise Plus

Se você estiver usando a edição Cloud SQL Enterprise Plus, poderá acessar recursos adicionais no Query Insights para realizar diagnósticos avançados de desempenho de consultas. Além dos recursos padrão do painel Query Insights, o Query Insights para a edição Cloud SQL Enterprise Plus permite que você faça o seguinte:

  • Capture e analise eventos de espera para todas as consultas executadas.
  • Filtre a carga agregada do banco de dados por dimensões adicionais, como consultas, tags, tipos de eventos de espera e muito mais.
  • Capture planos de consulta para todas as consultas executadas.
  • Crie amostras de até 200 planos de consulta por minuto.
  • Capture textos de consulta mais longos, de até 100 KB.
  • Obtenha atualizações quase em tempo real para métricas (na ordem de segundos).
  • Mantenha uma retenção de métricas mais longa, de 30 dias.
  • Obtenha recomendações de índice do consultor de índice.
  • Encerra uma sessão ou transação de longa duração em consultas ativas.
  • Acesse a solução de problemas assistida por IA ( visualização ).

A tabela a seguir compara os requisitos funcionais e os recursos do Query Insights para a edição Cloud SQL Enterprise com o Query Insights para a edição Cloud SQL Enterprise Plus.

Área de comparação Insights de consulta para a edição Enterprise do Cloud SQL Insights de consulta para a edição Cloud SQL Enterprise Plus
Versões de banco de dados suportadas PostgreSQL 9.6 ou posterior PostgreSQL 12 ou posterior
Tipos de máquinas suportados Suportado em todos os tipos de máquinas Não suportado em instâncias que usam um tipo de máquina de núcleo compartilhado ou em instâncias de réplica de leitura
Regiões suportadas Locais regionais do Cloud SQL Locais regionais da edição Cloud SQL Enterprise Plus
Período de retenção de métricas 7 dias 30 dias
Limite máximo de comprimento da consulta 4500 bytes 100 KB
Exemplo máximo de plano de consulta 20 200
Análise de eventos de espera Não disponível Disponível
Recomendações do consultor de índice Não disponível Disponível
Encerrar sessões ou transações de longa duração em consultas ativas Não disponível Disponível
Solução de problemas assistida por IA ( visualização ) Não disponível Disponível

Habilitar insights de consulta para a edição Cloud SQL Enterprise Plus

Para habilitar o query insights para a edição Cloud SQL Enterprise Plus, selecione Habilitar recursos do Enterprise Plus ao Habilitar o query insights na sua instância da edição Cloud SQL Enterprise Plus.

Preços

Não há custo adicional para insights de consulta em instâncias do Cloud SQL Enterprise Edition ou do Cloud SQL Enterprise Plus Edition.

Requisitos de armazenamento

O Query Insights para a edição Enterprise do Cloud SQL não ocupa espaço de armazenamento na sua instância do Cloud SQL. As métricas são armazenadas no Cloud Monitoring. Para solicitações de API, consulte Preços do Cloud Monitoring. O Cloud Monitoring tem uma camada que você pode usar sem custo adicional.

O Query Insights para a edição Cloud SQL Enterprise Plus armazena dados de métricas no mesmo disco conectado à sua instância do Cloud SQL e exige que você mantenha a configuração de aumento automático de armazenamento ativada.

O requisito de armazenamento para sete dias de dados é de aproximadamente 36 GB. Para 30 dias, você precisará de aproximadamente 155 GB. O Query Insights para a edição Enterprise Plus do Cloud SQL usa até 10 MB de RAM (memória compartilhada). As métricas devem estar disponíveis no Query Insights em até 30 segundos após a conclusão da consulta. Taxas de armazenamento aplicáveis ​​serão aplicadas .

Antes de começar

Antes de usar o query insights, faça o seguinte.

  1. Adicione funções e permissões necessárias .
  2. Habilite a API do Cloud Trace .
  3. Se você estiver usando o Query Insights para a edição Cloud SQL Enterprise Plus, certifique-se de que Habilitar aumentos automáticos de armazenamento esteja habilitado para a instância .

Funções e permissões necessárias

Para usar o query insights, você precisa conceder uma função predefinida, criar uma função personalizada ou fornecer a uma conta de usuário as permissões necessárias de Gerenciamento de Identidade e Acesso.

Para obter mais informações sobre como conceder funções, consulte Gerenciar acesso .

Para obter as permissões necessárias para acessar dados históricos de execução de consultas no painel Insights da consulta, peça ao administrador para conceder a você as seguintes funções do IAM no projeto que hospeda a instância do Cloud SQL:

Para obter mais informações sobre como conceder funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Essas funções predefinidas contêm as permissões necessárias para acessar dados históricos de execução de consultas no painel de insights da consulta. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissões são necessárias para acessar dados históricos de execução de consultas no painel Insights da consulta:

  • databaseinsights.aggregatedStats.query
  • databaseinsights.timeSeries.query

Você também pode obter essas permissões com funções personalizadas ou outras funções predefinidas .

Por exemplo, no Database Insights, você pode pedir ao administrador que lhe conceda a função predefinida de Visualizador do Database Insights ( roles/databaseinsights.viewer ). Em seguida, no Cloud SQL, você pode pedir ao administrador que lhe conceda uma das seguintes funções predefinidas:

Habilitar a API do Cloud Trace

Para visualizar planos de consulta e suas visualizações de ponta a ponta, seu Google Cloud o projeto deve ter a API Cloud Trace habilitada. Esta configuração permite que seuGoogle Cloud O projeto recebe dados de rastreamento de fontes autenticadas sem custo adicional. Esses dados podem ajudar você a detectar e diagnosticar problemas de desempenho na sua instância.

Para confirmar se a API Cloud Trace está habilitada, siga estas etapas:

  1. Do Google Cloud console, vá para APIs e Serviços :

    Acesse APIs e Serviços

  2. Clique em Habilitar APIs e serviços .
  3. Na barra de pesquisa, digite Cloud Trace API .
  4. Se a opção API habilitada for exibida, significa que a API está habilitada e não há mais nada a ser feito. Caso contrário, clique em Habilitar .

Habilitar aumentos automáticos de armazenamento

Se você estiver usando o Query Insights para a edição Enterprise Plus do Cloud SQL, certifique-se de que a configuração da instância para habilitar o aumento automático de armazenamento permaneça habilitada. Por padrão, essa opção está habilitada para instâncias do Cloud SQL.

Se você desativou esta configuração de instância anteriormente e deseja habilitar os insights de consulta para a edição Cloud SQL Enterprise Plus, reative primeiro os aumentos automáticos de armazenamento. Não é possível desativar os aumentos automáticos de armazenamento e habilitar os insights de consulta para a edição Cloud SQL Enterprise Plus.

Habilitar insights de consulta

Ao habilitar os insights de consulta, todas as outras operações são suspensas temporariamente. Essas operações incluem verificações de integridade, registro em log, monitoramento e outras operações de instância.

Console

Habilitar insights de consulta para uma instância

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. No bloco Configuração , clique em Editar configuração .
  4. Na seção Personalizar sua instância , expanda Insights da consulta .
  5. Marque a caixa de seleção Habilitar insights de consulta .
  6. Opcional: selecione recursos adicionais para sua instância. Alguns recursos estão disponíveis apenas para a edição Cloud SQL Enterprise Plus.
  7. Recurso Descrição Edição Enterprise do Cloud SQL Edição Cloud SQL Enterprise Plus
    Habilitar recursos do Enterprise Plus Marque esta caixa de seleção para habilitar o recurso de insights de consulta para a edição Cloud SQL Enterprise Plus no Cloud SQL. O recurso de insights de consulta para a edição Cloud SQL Enterprise Plus permite encerrar sessões e transações de longa duração em consultas ativas e aumenta a retenção de dados métricos para 30 dias. Você deve marcar esta caixa de seleção para habilitar a solução de problemas assistida por IA ( Visualização ). Não disponível Disponível

    Padrão : Desativado
    Análise de consulta ativa Permite revisar detalhes sobre suas consultas em execução ativa. Se habilitado na edição Cloud SQL Enterprise Plus, você também poderá encerrar sessões e transações de longa duração. Marque esta caixa de seleção para habilitar consultas ativas para sua instância do Cloud SQL para PostgreSQL. Para obter mais informações, consulte Monitorar consultas ativas . Disponível

    Padrão : Desativado
    Disponível

    Padrão : Desativado
    Recomendações do consultor de índice Fornece recomendações de índice para acelerar o processamento de consultas. Para obter mais informações, consulte Usar o Index Advisor . A ativação do Index Advisor requer a reinicialização da instância. A desativação do Index Advisor não requer reinicialização. Não disponível Disponível

    Padrão : Desativado
    Solução de problemas assistida por IA Marque esta caixa de seleção para habilitar a detecção de anomalias de desempenho, a análise de causa raiz e situação, e para obter recomendações para corrigir problemas com suas consultas e banco de dados. Este recurso está em versão prévia e você pode habilitá-lo e acessá-lo somente usando o Google Cloud console. Para mais informações, consulte Observar e solucionar problemas com assistência de IA . Não disponível Disponível

    Padrão : Desativado
    Armazene endereços IP de clientes Marque esta caixa de seleção para habilitar o armazenamento de endereços IP de clientes. O Cloud SQL pode armazenar os endereços IP de origem das consultas e permitir que você agrupe esses dados para executar métricas. As consultas vêm de mais de um host. Analisar gráficos para consultas de endereços IP de clientes pode ajudar a identificar a origem de um problema. Disponível

    Padrão : Desativado
    Disponível

    Padrão : Desativado
    Etiquetas de aplicação da loja Marque esta caixa de seleção para habilitar o armazenamento de tags de aplicativo. O armazenamento de tags de aplicativo ajuda a determinar as APIs e as rotas MVC (Model-View-Controller) que estão fazendo solicitações e a agrupar os dados para executar métricas. Esta opção exige que você comente consultas com um conjunto específico de tags usando a biblioteca de autoinstrumentação de mapeamento objeto-relacional (ORM) de código aberto sqlcommenter . Essas informações ajudam os insights de consulta a identificar a origem de um problema e o MVC de onde o problema está vindo. Os caminhos de aplicativo ajudam no monitoramento de aplicativos. Disponível

    Padrão: Desativado
    Disponível

    Padrão: Desativado
    Personalizar comprimentos de consulta Marque esta caixa de seleção para personalizar o limite de comprimento de uma sequência de consulta. Consultas com comprimentos maiores são mais úteis para consultas analíticas, mas também exigem mais memória. Qualquer sequência de consulta que ultrapasse o limite especificado será truncada na exibição.

    Alterar o limite de comprimento da consulta exige que você reinicie a instância. Você ainda pode adicionar tags a consultas que excedam o limite de comprimento.
    Você pode definir o limite em bytes de 256 bytes a 4500 bytes.

    Padrão : 1024 .
    Você pode especificar um limite em bytes de 1024 a 100000 .



    Padrão : 10000 bytes.

    Defina a taxa de amostragem máxima Marque esta caixa de seleção para definir a taxa máxima de amostragem. A taxa de amostragem é o número de amostras de planos de consulta executados que são capturadas por minuto em todos os bancos de dados da instância. Aumentar a taxa de amostragem provavelmente fornecerá mais pontos de dados, mas pode aumentar a sobrecarga de desempenho. Para desabilitar a amostragem, defina o valor como 0 . Você altera esse valor para um número de 0 a 20 .

    Padrão : 5 .
    Você pode aumentar o máximo para 200 para fornecer mais pontos de dados.

    Padrão : 200
  8. Clique em Salvar .

Habilitar insights de consulta para várias instâncias

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. Clique no menu Mais ações em qualquer linha.
  3. Selecione Habilitar insights de consulta .
  4. Na caixa de diálogo, marque a caixa de seleção Habilitar insights de consulta para várias instâncias .
  5. Clique em Habilitar .
  6. Na caixa de diálogo subsequente, selecione as instâncias para as quais você deseja habilitar os insights de consulta.
  7. Clique em Habilitar insights de consulta .

gcloud

Para habilitar insights de consulta para uma instância do Cloud SQL usando gcloud , execute gcloud sql instances patch com o sinalizador --insights-config-query-insights-enabled da seguinte forma após substituir INSTANCE_ID pelo ID da instância.

    gcloud sql instances patch INSTANCE_ID \
    --insights-config-query-insights-enabled
  

Além disso, use um ou mais dos seguintes sinalizadores opcionais:

  • --insights-config-record-client-address

    Armazena os endereços IP do cliente de onde as consultas estão vindo e ajuda você a agrupar esses dados para executar métricas neles. As consultas vêm de mais de um host. Analisar gráficos para consultas de endereços IP do cliente pode ajudar a identificar a origem de um problema.

  • --insights-config-record-application-tags

    Armazena tags de aplicativo que ajudam a determinar as APIs e as rotas de modelo-visão-controlador (MVC) que estão fazendo solicitações e agrupando os dados para executar métricas. Esta opção exige que você comente consultas com um conjunto específico de tags. Você pode fazer isso usando a biblioteca de autoinstrumentação de mapeamento objeto-relacional (ORM) de código aberto sqlcommenter . Essas informações ajudam o Query Insights a identificar a origem de um problema e o MVC de onde o problema está vindo. Os caminhos de aplicativo ajudam no monitoramento de aplicativos.

  • --insights-config-query-string-length

    Define o limite de comprimento padrão da consulta. Consultas com comprimentos maiores são mais úteis para consultas analíticas, mas também exigem mais memória. Alterar o comprimento da consulta exige a reinicialização da instância. Você ainda pode adicionar tags a consultas que excedem o limite de comprimento. Para a edição Cloud SQL Enterprise, você pode especificar um valor em bytes de 256 a 4500 O comprimento padrão da consulta é 1024 bytes. Para a edição Cloud SQL Enterprise Plus, você pode especificar um limite em bytes de 1024 a 100000 O valor padrão é 10000 bytes.

  • --query_plans_per_minute

    Por padrão, são capturadas no máximo 5 amostras de planos de consulta executados por minuto em todos os bancos de dados da instância. Aumentar a taxa de amostragem provavelmente resultará em mais pontos de dados, mas pode aumentar o desempenho. Para desabilitar a amostragem, defina este valor como 0 Para a edição Cloud SQL Enterprise, você pode alterar o valor de 0 a 20. Para a edição Cloud SQL Enterprise Plus, você pode aumentar o valor máximo para até 200 para fornecer mais pontos de dados. Por padrão, a taxa máxima de amostragem é 200 amostras de planos de consulta por minuto em todos os bancos de dados da instância.

Substitua o seguinte:

gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled \
--insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \
--query_plans_per_minute=QUERY_PLANS_PER_MINUTE \
--insights-config-record-application-tags \
--insights-config-record-client-address \
--tier=API_TIER_STRING \
--region=REGION
  

REST v1

Para habilitar insights de consulta para uma instância do Cloud SQL usando a API REST, chame o método instances.patch com as configurações insightsConfig .

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

  • PROJECT_ID : o ID do projeto
  • INSTANCE_ID : o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings" : {
     "insightsConfig" : {
       "queryInsightsEnabled" : true,
       "recordClientAddress" : true,
       "recordApplicationTags" : true,
       "queryStringLength" : 1024,
       "queryPlansPerMinute" : 20,
   }
  }
}

Para enviar sua solicitação, expanda uma destas opções:

Você deve receber uma resposta JSON semelhante à seguinte:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2025-03-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Terraform

Para usar o Terraform para habilitar insights de consulta para uma instância do Cloud SQL, defina o sinalizador query_insights_enabled como true .

Além disso, você pode usar um ou mais dos seguintes sinalizadores opcionais:

  • query_string_length : para a edição Cloud SQL Enterprise, você pode especificar um valor em bytes de 256 a 4500 O comprimento padrão da consulta é 1024 bytes. Para a edição Cloud SQL Enterprise Plus, você pode especificar um limite em bytes de 1024 a 100000 O valor padrão é 10000 bytes.
  • record_application_tags : defina o valor como true se quiser registrar tags de aplicativo da consulta.
  • record_client_address : defina o valor como true se desejar registrar o endereço IP do cliente. O padrão é false .
  • query_plans_per_minute : para a edição Cloud SQL Enterprise, você pode definir o valor de 0 a 20 O padrão é 5 Para a edição Cloud SQL Enterprise Plus, você pode aumentar o máximo para até 200 para fornecer mais pontos de dados. A taxa de amostragem máxima padrão é 200 amostras de plano de consulta por minuto em todos os bancos de dados da instância.

Aqui está um exemplo:

  resource "google_sql_database_instance" "INSTANCE_NAME" {
  name                = "INSTANCE_NAME"
  database_version    = "POSTGRESQL_VERSION"
  region              = "REGION"
  root_password       = "PASSWORD"
  deletion_protection = false # set to true to prevent destruction of the resource
  settings {
    tier = "DB_TIER"
    insights_config {
      query_insights_enabled  = true
      query_string_length     = 2048 # Optional
      record_application_tags = true # Optional
      record_client_address   = true # Optional
      query_plans_per_minute  = 10 # Optional
    }
  }
  }
  

Para aplicar sua configuração do Terraform em um Google Cloud projeto, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell .
  2. Defina o padrão Google Cloud projeto onde você deseja aplicar suas configurações do Terraform.

    Você só precisa executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variáveis ​​de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform deve ter seu próprio diretório (também chamado de módulo raiz ).

  1. No Cloud Shell , crie um diretório e um novo arquivo dentro dele. O nome do arquivo deve ter a extensão .tf — por exemplo, main.tf Neste tutorial, o arquivo será chamado de main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se estiver seguindo um tutorial, você pode copiar o código de exemplo em cada seção ou etapa.

    Copie o código de exemplo no main.tf recém-criado.

    Opcionalmente, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução completa.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve suas alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção -upgrade :

    terraform init -upgrade

Aplicar as alterações

  1. Revise a configuração e verifique se os recursos que o Terraform irá criar ou atualizar correspondem às suas expectativas:
    terraform plan

    Faça correções na configuração conforme necessário.

  2. Aplique a configuração do Terraform executando o seguinte comando e digitando yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Aplicação concluída!".

  3. Abra seu Google Cloud projeto para visualizar os resultados. No Google Cloud console, navegue até seus recursos na interface do usuário para garantir que o Terraform os criou ou atualizou.

Espera-se que as métricas estejam disponíveis nos insights da consulta minutos após a conclusão da consulta. Revise a política de retenção de dados do Cloud Monitoring .

Os rastreamentos de insights de consulta são armazenados no Cloud Trace. Consulte a política de retenção de dados do Cloud Trace .

Exibir o painel de insights da consulta

O painel de insights da consulta mostra a carga da consulta com base nos fatores selecionados. A carga da consulta é uma mensuração do trabalho total de 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 da consulta.

Para abrir o painel de insights da consulta , siga estas etapas:

  1. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  2. No menu de navegação do Cloud SQL, clique em Insights da consulta ou clique em Ir para Insights da consulta para obter informações mais detalhadas sobre consultas e desempenho na página Visão geral da instância .
  3. O painel de insights da consulta é aberto. Dependendo se você estiver usando o Query Insights para a edição Enterprise do Cloud SQL ou o Query Insights para a edição Enterprise Plus do Cloud SQL, o painel de insights da consulta mostra as seguintes informações sobre sua instância:

Edição Cloud SQL Enterprise Plus

Exibe o painel do Query Insights para a edição Enterprise Plus com menus para filtrar por Banco de Dados, Usuário e Endereço do Cliente. Você também pode filtrar por intervalo de tempo de 1 hora, 6 horas, 1 dia 30 dias ou selecionar um intervalo de tempo personalizado. Este gráfico mostra a carga do banco de dados por tempo de execução em milissegundos para todas as consultas em um período de uma hora.
  • Todas as consultas : mostra a carga do banco de dados para todas as consultas no intervalo de tempo selecionado. Cada consulta é codificada por cores individualmente. Para visualizar um ponto no tempo para uma consulta específica, mantenha o ponteiro do mouse sobre o gráfico da consulta.
  • Banco de dados : filtra a carga de consulta em um banco de dados específico ou em todos os bancos de dados.
  • Usuário : filtra a carga de consulta de uma conta de usuário específica.
  • Endereço do cliente : filtra a carga de consulta de um endereço IP específico.
  • Intervalo de tempo : filtra a carga da consulta por intervalos de tempo, como 1 hora, 6 horas, 1 dia, 7 dias, 30 dias ou um intervalo personalizado.
  • Tipos de eventos de espera : filtra a carga da consulta por CPU e tipos de eventos de espera de bloqueio.
  • Consultas , Tipos de eventos de espera , Bancos de dados , Usuários , Tags e Endereços de clientes : Classifique pelas principais dimensões que mais contribuem para a carga do banco de dados no gráfico. Consulte Filtrar a carga do banco de dados .

Edição Enterprise do Cloud SQL

Exibe o painel de insights da consulta, com menus suspensos para bancos de dados, usuários e endereços. À direita dos menus suspensos há um filtro para definir um intervalo de tempo. Além disso, um gráfico mostra a carga do banco de dados para as principais consultas. Na parte inferior do gráfico, há caixas de seleção para capacidade da CPU, CPU e espera da CPU, espera de E/S e espera de bloqueio, além de uma guia para consultas e tags.
  • Banco de dados : filtra a carga de consulta em um banco de dados específico ou em todos os bancos de dados.
  • Usuário : filtra a carga de consulta de uma conta de usuário específica.
  • Endereço do cliente : filtra a carga de consulta de um endereço IP específico.
  • Intervalo de tempo : filtra a carga da consulta por intervalos de tempo, como 1 hora, 6 horas, 1 dia, 7 dias, 30 dias ou um intervalo personalizado.
  • Gráfico de carga do banco de dados : exibe o gráfico de carga da consulta, com base em dados filtrados.
  • Capacidade da CPU, CPU e espera da CPU, espera de E/S e espera de bloqueio : filtra as cargas com base nas opções selecionadas. Consulte Exibir a carga do banco de dados para as principais consultas para obter detalhes sobre cada um desses filtros.
  • Consultas e Marcadores : Filtra a carga da consulta por uma consulta selecionada ou por um marcador de consulta SQL selecionado. Consulte Filtrar a carga do banco de dados .

Visualizar a carga do banco de dados para todas as consultas

A carga de consultas ao banco de dados é uma medida do trabalho (em segundos de CPU) que as consultas executadas no banco de dados selecionado realizam ao longo do tempo. Cada consulta em execução está usando ou aguardando recursos de CPU, recursos de E/S ou recursos de bloqueio. A carga de consultas ao banco de dados é a razão entre o tempo gasto por todas as consultas concluídas em um determinado intervalo de tempo e o tempo de processamento.

O painel de insights de consulta de nível superior mostra o gráfico de carga do banco de dados — todas as consultas principais . Os menus suspensos no painel permitem filtrar o gráfico por um banco de dados, usuário ou endereço de cliente específico.

Edição Cloud SQL Enterprise Plus

Exibe o gráfico de carga do banco de dados com carga para capacidade de CPU, CPU e espera de CPU, espera de E/S e espera de bloqueio.

Edição Enterprise do Cloud SQL

Exibe o gráfico de carga do banco de dados com carga para capacidade de CPU, CPU e espera de CPU, espera de E/S e espera de bloqueio.

As linhas coloridas no gráfico mostram a carga da consulta, dividida em categorias:

  • Capacidade da CPU : o número de CPUs disponíveis na instância.
  • CPU e Espera de CPU : A proporção entre o tempo gasto por consultas em estado ativo e o tempo de processamento. Esperas de E/S e Bloqueio não bloqueiam consultas em estado ativo. Essa métrica pode significar que a consulta está usando a CPU ou aguardando que o agendador do Linux agende o processo do servidor que a executa enquanto outros processos estão usando a CPU.
  • Espera de E/S : a proporção entre o tempo gasto por consultas que aguardam E/S e o tempo de processamento. A espera de E/S inclui a Espera de E/S de Leitura e a Espera de E/S de Gravação. Se você quiser um detalhamento das informações sobre esperas de E/S, consulte o Cloud Monitoring. Consulte as métricas do Cloud SQL para obter mais informações. Para obter mais informações, consulte a tabela de eventos do PostgreSQL.
  • Espera de Bloqueio : a proporção entre o tempo gasto por consultas que aguardam bloqueios e o tempo de processamento. Inclui esperas de bloqueio, esperas de bloqueio lento e esperas de bloqueio de pinos de buffer. Para ver um detalhamento das informações sobre esperas de bloqueio, use o Cloud Monitoring. Consulte as métricas do Cloud SQL para obter mais informações.

As linhas coloridas no gráfico mostram a carga por banco de dados por tempo de execução. Revise o gráfico e use as opções de filtragem para explorar estas perguntas:

  • A carga da consulta está alta? O gráfico está apresentando picos ou se elevou ao longo do tempo? Se você não observar uma carga alta, o problema não está na sua consulta.
  • Há quanto tempo a carga está alta? Ela está alta apenas agora ou já está alta há muito tempo? Use o seletor de intervalo para selecionar vários períodos e descobrir a duração do problema. Aumente o zoom para visualizar uma janela de tempo em que picos de carga de consultas são observados. Diminua o zoom para visualizar até uma semana da linha do tempo.
  • O que está causando a alta carga? Você pode selecionar opções para examinar a capacidade da CPU, a CPU e a espera da CPU, a espera de bloqueio ou a espera de E/S. O gráfico para cada uma dessas opções tem uma cor diferente para que você possa identificar aquela com a maior carga. A linha azul-escura no gráfico mostra a capacidade máxima da CPU do sistema. Ela permite comparar a carga da consulta com a capacidade máxima da CPU do sistema. Essa comparação ajuda a determinar se uma instância está ficando sem recursos de CPU.
  • Qual banco de dados está com a carga mais alta? Selecione diferentes bancos de dados no menu suspenso "Bancos de Dados" para encontrar os bancos de dados com as cargas mais altas.
  • Usuários ou endereços IP específicos causam cargas mais altas? Selecione diferentes usuários e endereços nos menus suspensos para identificar aqueles que estão causando cargas mais altas.

Filtrar a carga do banco de dados

Você pode filtrar a carga do banco de dados por consultas ou tags. Se estiver usando o Query Insights para a edição Enterprise Plus do Cloud SQL, você poderá personalizar o gráfico de carga do banco de dados para detalhar os dados exibidos usando qualquer uma das seguintes dimensões:

  • Todas as consultas

  • Tipos de eventos de espera

  • Eventos de espera

  • Bancos de dados

  • Usuários

  • Etiquetas

  • Endereços de clientes

Para personalizar o gráfico de carga do banco de dados, selecione uma dimensão no menu suspenso Carga do banco de dados por tempo de execução .

Veja os principais contribuidores para a carga do banco de dados

Para visualizar os principais contribuidores para a carga do banco de dados, você pode usar a tabela "Principais dimensões por carga do banco de dados" . A tabela "Principais dimensões por carga do banco de dados" exibe os principais contribuidores para o período e a dimensão selecionados no menu suspenso do gráfico "Carga do banco de dados por tempo de execução" . Você pode modificar o período ou a dimensão para visualizar os principais contribuidores para uma dimensão ou período diferente.

Na tabela Principais dimensões por carga de dados , você pode selecionar as seguintes guias.

Aba Descrição
Consultas A tabela exibe as principais consultas normalizadas por tempo total de execução. Para cada consulta, os dados mostrados em colunas são listados da seguinte forma:
  • Tempo médio de execução (ms) : tempo médio de execução da consulta.
  • Tempo total de execução (ms) : o tempo total de execução da consulta específica.
  • Média de linhas retornadas : número médio de linhas recuperadas para a consulta.
  • Vezes chamadas : o número de vezes que a consulta foi chamada pelo aplicativo.
  • %load by SELECTED_DIMENSION : o gráfico de linha de porcentagem descreve como a dimensão selecionada é distribuída para a consulta específica.
Tipos de eventos de espera A tabela exibe a lista dos principais tipos de eventos de espera que ocorreram durante o período selecionado. Esta tabela está disponível apenas para insights de consulta da edição Cloud SQL Enterprise Plus.
  • Tempo médio gasto em espera (ms) : tempo médio que as consultas passaram no tipo de evento de espera específico.
  • Tempo total gasto em espera (ms) : o tempo total de execução que as consultas gastaram no tipo de evento de espera específico.
  • Contagem de tipos de eventos de espera : o número de vezes que um tipo específico de evento de espera ocorreu no período de tempo selecionado.
  • %load by SELECTED_DIMENSION : o gráfico de linha de porcentagem descreve como a dimensão selecionada para o gráfico de carga do banco de dados é distribuída para o tipo de evento de espera específico.
Eventos de espera A tabela exibe a lista dos principais eventos de espera que ocorreram durante o período selecionado. Esta tabela está disponível apenas para insights de consulta da edição Cloud SQL Enterprise Plus.
  • Tempo médio gasto em espera (ms) : tempo médio que as consultas passaram no evento de espera específico.
  • Tempo total gasto em espera (ms) : o tempo total de execução que as consultas gastaram no evento de espera específico.
  • Contagem de eventos de espera : o número de vezes que um tipo específico de evento de espera ocorreu no período de tempo selecionado.
  • %load by SELECTED_DIMENSION : o gráfico de linha de porcentagem descreve como a dimensão selecionada para o gráfico de carga do banco de dados é distribuída para o evento de espera específico.
Bancos de dados A tabela mostra a lista dos principais bancos de dados que contribuíram para a carga durante o período escolhido em todas as consultas executadas.
  • Tempo médio gasto no banco de dados (ms) : tempo médio que as consultas passam no banco de dados específico.
  • Tempo total gasto no banco de dados (ms) : tempo total de execução das consultas no banco de dados específico.
  • %load by SELECTED_DIMENSION : o gráfico de linha de porcentagem descreve como a dimensão selecionada para o gráfico de carga do banco de dados é distribuída no banco de dados específico.
Usuários A tabela mostra a lista dos principais usuários para o período selecionado em todas as consultas executadas.
  • Tempo médio gasto pelo usuário (ms) : tempo médio que as consultas gastaram no usuário específico.
  • Tempo total gasto no usuário (ms) : tempo total de execução das consultas no usuário específico.
  • %load by SELECTED_DIMENSION : o gráfico de linha de porcentagem descreve como a dimensão selecionada para o gráfico de carga do banco de dados é distribuída entre o usuário específico.
Etiquetas Para obter informações sobre tags, filtre por tags de consulta .
Endereços de clientes A tabela mostra a lista dos principais usuários para o período selecionado em todas as consultas executadas.
  • Tempo total gasto no endereço do cliente (ms) : o tempo total de execução das consultas para um cliente específico.
  • %load by SELECTED_DIMENSION : o gráfico de linha de porcentagem descreve como a dimensão selecionada para o gráfico de carga do banco de dados é distribuída no cliente específico.

Filtrar por consultas

A tabela "Principais consultas" fornece uma visão geral das consultas que causam a maior carga de consulta. A tabela mostra todas as consultas normalizadas para o intervalo de tempo e as opções selecionadas no painel "Insights da consulta". Ela classifica as consultas pelo tempo total de execução durante o intervalo de tempo selecionado.

Edição Cloud SQL Enterprise Plus

Para classificar a tabela, selecione um título de coluna.

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

Edição Enterprise do Cloud SQL

Para classificar a tabela, selecione um título de coluna ou uma propriedade em Filtrar consultas .

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

A tabela mostra as seguintes propriedades:

  • Consulta : a string de consulta normalizada. Por padrão, o Query Insights exibe apenas 1.024 caracteres na string de consulta. Consultas rotuladas como UTILITY COMMAND geralmente incluem comandos BEGIN , COMMIT e EXPLAIN ou comandos wrapper.
  • Banco de dados : o banco de dados no qual a consulta foi executada.
  • Recomendações : as recomendações sugeridas, como Criar índices , para melhorar o desempenho da consulta.
  • Carregar por tempo total/Carregar por CPU/Carregar por espera de E/S/Carregar por espera de bloqueio : as opções pelas quais você pode filtrar consultas específicas para encontrar a maior carga.
  • % de carga por consultas : a porcentagem de carga por consulta individual.
  • Analisar latência : se você habilitou a solução de problemas assistida por IA ( Visualização ) para esta instância, poderá clicar neste link para solucionar problemas de consultas lentas.
  • Tempo médio de execução (ms) : tempo médio de execução da consulta.
  • Vezes chamadas : o número de vezes que o aplicativo chamou a consulta.
  • Média de linhas retornadas : número médio de linhas retornadas para a consulta.

O Query Insights armazena e exibe apenas consultas normalizadas.

Por padrão, o Query Insights não coleta endereços IP ou informações de tags. Você pode habilitar o Query Insights para coletar essas informações e, quando necessário, desabilitar a coleta.

Os traços do plano de consulta não coletam ou armazenam valores constantes e remove qualquer informação do PII que a constante possa mostrar.

Para o PostgreSQL 9.6 e 10, o consulta Insights exibe consultas normalizadas, ou seja ? substitui o valor constante literal. No exemplo a seguir, o nome constante é removido e ? substitui isso.

  UPDATE
    "demo_customer"
  SET
    "customer_id" = ?::uuid,
    "name" = ?,
    "address" = ?,
    "rating" = ?,
    "balance" = ?,
    "current_city" = ?,
    "current_location" = ?
  WHERE
    "demo_customer"."id" = ?
  

Para o PostgreSQL versão 11 e posterior, $1 , $2 e variáveis ​​semelhantes substituem os valores constantes literais.

  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
  

Filtro por tags de consulta

Para solucionar um aplicativo, você deve primeiro adicionar tags às suas consultas SQL . As tags de carga de consulta fornecem uma quebra da carga de consulta da tag selecionada ao longo do tempo.

O consulta Insights fornece monitoramento centrado no aplicativo para diagnosticar problemas de desempenho para aplicativos criados usando ORMS. Se você é responsável por toda a pilha de aplicativos, o Consery Insights fornece monitoramento de consulta a partir de uma exibição de aplicativo. A marcação de consulta ajuda a encontrar problemas em construções de nível superior, como com a lógica de negócios ou um microsserviço.

Você pode marcar consultas pela lógica de negócios, por exemplo, o pagamento, inventário, análise de negócios ou tags de envio. Você pode encontrar a carga de consulta que a lógica de negócios cria. Por exemplo, você pode observar eventos inesperados, como picos para uma tag de análise de negócios às 13h ou crescimento inesperado para uma tendência de serviço de pagamento na semana anterior.

Para calcular a carga do banco de dados para tags , o Consery Insights usa a quantidade de tempo gasto por cada consulta que usa a tag que você seleciona. A ferramenta calcula o tempo de conclusão no limite de minuto usando o tempo de parede.

No painel do consulta Insights, para visualizar a tabela de tags, selecione Tags . A tabela classifica as tags por sua carga total por tempo total.

Mostra o painel do consulta Insights, com carregamento para tags e uma lista de tags.

Você pode classificar a tabela selecionando uma propriedade nas tags de filtro ou clicando em um cabeçalho de coluna. A tabela mostra as seguintes propriedades:

  • Ação, controlador, estrutura, rota, aplicação, driver de banco de dados : cada propriedade que você adicionou às suas consultas aparece como uma coluna. Pelo menos uma dessas propriedades deve ser adicionada se você deseja filtrar por tags.
  • Carregar por tempo total/carregamento por CPU/Carregar por io Wait/Carregar por Lock Wait : Opções para filtrar consultas específicas para encontrar a maior carga para cada opção.
  • Tempo de execução do AVG (MS) : o tempo médio para a consulta ser executada.
  • Linhas AVG retornadas : O número médio de linhas retornou para a consulta.
  • Vezes chamado : o número de vezes que o aplicativo chamou de consulta.
  • Banco de dados : o banco de dados contra o qual a consulta foi executada.

Veja os detalhes da consulta para uma consulta ou tag específico

Para determinar se uma consulta ou tag específico é a causa raiz do problema, faça o seguinte na guia Consultas ou guia Tags , respectivamente:

  1. Para classificar a lista em ordem decrescente, clique no carregamento por cabeçalho total .
  2. Clique na consulta ou na tag na parte superior da lista. Tem a carga mais alta e está levando mais tempo que os outros.

A página de detalhes da consulta é aberta e mostra os detalhes da consulta ou tag selecionada.

Examine uma carga de consulta específica

A página Detalhes da consulta para uma consulta selecionada aparece o seguinte:

Mostra a carga do banco de dados e os gráficos de latência para um          consulta específica.

A carga do banco de dados - gráfico de consulta específico mostra uma medida do trabalho (em segundos da CPU) que sua consulta normalizada realizou em sua consulta selecionada ao longo do tempo. Para calcular a carga, ele usa a quantidade de tempo gasto pelas consultas normalizadas que são concluídas no limite de minuto até o horário do relógio de parede. No topo da tabela, os primeiros 1024 caracteres da consulta normalizada, com os literais removidos por agregação e PII, são exibidos.

Mostra o gráfico de carga do banco de dados com uma carga para uma consulta específica, com          Filtros selecionados para capacidade da CPU, CPU e CPU Espera, io Wait e Lock          espere.

Como no gráfico total de consultas, você pode filtrar a carga para uma consulta específica por banco de dados , usuário e endereço do cliente . A carga de consulta é dividida na capacidade da CPU , CPU e CPU esperam , espere e bloqueie a espera .

Examine uma carga de consulta marcada específica

O painel para uma tag selecionado aparece como segue. Por exemplo, se todas as consultas de um pagamento de microsserviços forem marcadas como payment , você poderá ver o valor da carga de consulta que está tendendo visualizando o payment da tag.

Mostra a carga do banco de dados e os gráficos de latência na página para um          tag específica.

O gráfico de tags específico do banco de dados mostra uma medida do trabalho (em segundos da CPU) que consultas que correspondem às tags selecionadas foram executadas no banco de dados selecionado ao longo do tempo. Como no gráfico total de consultas, você pode filtrar a carga para uma tag específica por banco de dados , usuário e endereço do cliente .

Examine as operações em um plano de consulta amostrado

Um plano de consulta pega uma amostra da sua consulta e a divide em operações individuais. Ele explica e analisa cada operação na consulta.

O gráfico de amostras do plano de consulta mostra todos os planos de consulta em execução em momentos específicos e a quantidade de tempo que cada plano levou para ser executado. Você pode alterar a taxa na qual as amostras de plano de consulta são capturadas por minuto. Veja Ativar Insights de consulta .

Um gráfico para planos de consulta de amostra, com o tempo em que eles          foram executados na parte inferior do gráfico (eixo x) e o número de segundos          Eles correram à direita (eixo y).

Por padrão, o painel à direita mostra os detalhes do plano de consulta de amostra que leva mais tempo, conforme visível no gráfico de amostras do plano de consulta . Para ver os detalhes de outro plano de consulta de amostra, clique no círculo relevante no gráfico. Os detalhes expandidos mostram um modelo de todas as operações no plano de consulta.

Cada operação mostra a latência, as linhas retornadas e o custo da operação. Quando você seleciona uma operação, você pode ver mais detalhes, como blocos de sucesso compartilhados, o tipo de esquema, loops e linhas de plano.

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

Tente restringir o problema analisando as seguintes perguntas:

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

Examine a latência

A latência é o tempo gasto para a consulta normalizada ser concluída, no tempo de parede. Você usa o gráfico de latência para examinar a latência na consulta ou na tag. O painel de latência mostra as latências do percentil 50, 95 e 99 para encontrar comportamentos externos.

A imagem a seguir mostra o gráfico de carga do banco de dados no percentil 50 para uma consulta específica com filtros selecionados para capacidade da CPU, CPU e CPU Wait, IO Wait e Lock Wait.

Mostra o gráfico de latência de consulta para um específico          Consulta com filtros selecionados para capacidade da CPU, CPU e CPU Wait,          Io Espere, e trava, espere.

A latência das consultas paralelas é medida no tempo de parede, mesmo que a carga de consulta possa ser maior para a consulta devido a vários núcleos usados ​​para executar parte da consulta.

Tente restringir o problema analisando as seguintes perguntas:

  • O que está causando a alta carga? Selecione as opções para observar a capacidade da CPU, a CPU e a CPU Wait, E/S Wait ou Lock Wait.
  • Há quanto tempo a carga está alta? Está apenas alto agora? Ou está alto há muito tempo? Altere o intervalo de tempo para encontrar a data e a hora em que a carga começou a ter um desempenho ruim.
  • Houve picos de latência? Altere a janela de tempo para estudar a latência histórica para a consulta normalizada.

Rastrear a fonte do problema

Quando você encontrar as áreas e horários em que a carga foi a mais alta, identifique a fonte do problema usando o rastreamento para perfurar ainda mais.

Para ajudá-lo a identificar a fonte específica do problema, como modelo, visualização, controlador, rota, host ou usuário, o consulta Insights fornece uma visualização de rastreamento de aplicativo de ponta a ponta no contexto. Essa visualização ajuda a entender o que está acontecendo na camada de banco de dados para obter uma solicitação específica e a encontrar a fonte de uma consulta problemática por modelo, visualização, controladores e rota.

Se você ativar o OpenCensus ou o OpenElemetria , as informações do Span OpenCensus serão enviadas ao banco de dados junto com as informações da tag dentro dos comentários do SQL. Quaisquer traços do aplicativo para o registro da nuvem estão vinculados aos traços do plano de consulta de banco de dados para ajudar a identificar a fonte do problema.

Clique na guia End a End na tela de consulta de amostra para observar o rastreamento no contexto.

Selecione uma tag de ponta a ponta para visualizar informações específicas          sobre a tag. O resumo mostra os RPCs e a duração total em MS para          cada operação para essa tag.

Para determinar o cliente e o usuário que causam o problema, use os principais endereços do cliente e as principais tabelas de usuários para encontrar as cargas mais altas. Você pode adicionar um endereço de usuário ou IP ao filtro para analisar melhor um endereço de usuário ou cliente específico. Os detalhes nas tabelas incluem a porcentagem da carga de consulta, o tempo médio de execução em milissegundos e os tempos chamados.

A imagem mostra que, para os endereços do cliente superior, a carga era          100%, o tempo médio de execução foi de 19.568 segundos e os tempos          chamado foi 1.226. Para os principais usuários, o usuário Postgres tinha 100% da carga,          teve um tempo médio de execução de 19.568 ms e foi chamado de 1.226          vezes.

Você pode usar o Cloud Trace para ver o rastreamento de ponta a ponta para cada etapa do plano de consulta. No painel do consulta Insights, clique no link Exibir no rastreamento para abrir a ferramenta de rastreamento da nuvem. O gráfico de rastreamento mostra todos os traços que foram executados pelo período selecionado.

O gráfico de rastreamento mostra todos os traços que foram executados para          O período selecionado, neste caso, uma hora. O          Page também possui uma tabela que mostra latência, método http, URL e o          tempo em que o rastreio foi executado.cd

Para detalhes, consulte Encontrar e visualizar traços .

Adicione tags às consultas SQL

As consultas SQL de marcação simplifica a solução de problemas de aplicativos. Você pode usar o SQLComMenter para adicionar tags às suas consultas SQL automaticamente ou manualmente.

Use SQLComMenter com ORM

Quando você usa o ORM em vez de escrever diretamente as consultas SQL, você pode não encontrar o código do aplicativo que está causando desafios de desempenho. Você também pode ter problemas para analisar como o código do seu aplicativo afeta o desempenho da consulta. Para resolver esse problema, o Consery Insights fornece uma biblioteca de código aberto chamado SQLComMenter. Esta biblioteca é útil para desenvolvedores e administradores que usam ferramentas ORM para detectar qual código de aplicativo está causando problemas de desempenho.

Se você estiver usando o ORM e o SQLComMenter juntos, as tags serão criadas automaticamente. Você não precisa adicionar ou alterar o código em seu aplicativo.

Você pode instalar o SQLComMenter no servidor de aplicativos. A biblioteca de instrumentação permite que as informações do aplicativo relacionadas à sua estrutura MVC sejam propagadas ao banco de dados, juntamente com as consultas como um comentário SQL. O banco de dados pega essas tags e começa a gravar e agregar estatísticas por tags, que são ortogonais às estatísticas agregadas por consultas normalizadas. As Insights de consulta mostram as tags para que você saiba qual aplicativo está causando a carga da consulta e pode encontrar o código do aplicativo que está causando problemas de desempenho.

Quando você examina os resultados em logs do banco de dados SQL, eles aparecem o seguinte:

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

As tags suportadas incluem o nome do controlador, a rota, a estrutura e a ação.

O conjunto de ferramentas ORM no SQLComMenter é suportado para as seguintes linguagens de programação:

Pitão
  • Django
  • psicopg2
  • Sqlalchemy
  • Frasco
Java
  • Hibernar
  • Primavera
Rubi
  • Trilhos
Node.js
  • Knex.js
  • Sequelize.js
  • Express.js

Para obter mais informações sobre o SQLCommenter e como usá -las em sua estrutura ORM, consulte a documentação do SQLCompler .

Use SQLComMenter para adicionar tags

Se você não estiver usando o ORM, você deve adicionar manualmente tags ou comentários do SQLCommenter no formato de comentário SQL correto à sua consulta SQL. Você também deve aumentar cada instrução SQL com um comentário contendo um par de valores de chave serializado. Use pelo menos uma das seguintes chaves:

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

Consulta Insights cai todas as outras chaves.

Desative insights de consulta

Console

Para desativar as idéias de consulta para uma instância de nuvem SQL usando o Google Cloud Console, siga estas etapas:

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página de visão geral de uma instância, clique no nome da instância.
  3. No ladrilho de configuração , clique em Editar configuração .
  4. Na seção Opções de configuração , expanda as informações da consulta .
  5. Limpe a caixa de seleção Ativar Insights de consulta .
  6. Clique em Salvar .

gcloud

Para desativar as idéias de consulta para uma instância do Cloud SQL usando gcloud , execute gcloud sql instances patch com o sinalizador --no-insights-config-query-insights-enabled da seguinte maneira, depois de substituir a INSTANCE_ID pelo ID da instância.

gcloud sql instances patch INSTANCE_ID \
  --no-insights-config-query-insights-enabled

DESCANSAR

Para desativar as informações de consulta para uma instância do Cloud SQL usando a API REST, ligue para o método queryInsightsEnabled instances.patch false

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

  • project-id : o ID do projeto.
  • instance-id : o ID da instância.

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corpo JSON da solicitação:

{
  "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } }
}

Para enviar sua solicitação, expanda uma destas opções:

Você deve receber uma resposta JSON semelhante à seguinte:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2021-01-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Desativar idéias de consulta para o Cloud SQL Enterprise Plus Edition

Para desativar as idéias de consulta para o Cloud SQL Enterprise Plus Edition, faça o seguinte:

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página de visão geral de uma instância, clique no nome da instância.
  3. Clique em Editar .
  4. Na seção Personalizar sua instância , expanda as informações da consulta .
  5. Limpe a caixa de seleção Enable Enterprise Plus .
  6. Clique em Salvar .

O que vem a seguir

,

Esta página descreve como usar o painel do consulta Insights para detectar e analisar problemas de desempenho com suas consultas.

Introdução

As Insights de consulta ajudam a detectar, diagnosticar e impedir problemas de desempenho da consulta para bancos de dados SQL em nuvem. Ele suporta monitoramento intuitivo e fornece informações de diagnóstico que ajudam a ir além da detecção para identificar a causa raiz dos problemas de desempenho.

Com o Consults Insights, você pode monitorar o desempenho em um nível de aplicativo e rastrear a fonte de uma consulta problemática na pilha de aplicativos por modelo, visualização, controlador, rota, usuário e host. A ferramenta de insights de consulta pode se integrar às suas ferramentas existentes de monitoramento de aplicativos (APM) e Google CloudServiços usando padrões abertos e APIs. Dessa forma, você pode monitorar e solucionar problemas de consulta usando sua ferramenta favorita.

As Insights de consulta ajudam a melhorar o desempenho da consulta SQL em nuvem, orientando -o nas etapas a seguir:

Consulta Insights para Cloud SQL Enterprise Plus Edition

Se você estiver usando o Cloud SQL Enterprise Plus Edition, poderá acessar recursos adicionais em Insights de consulta para realizar diagnósticos avançados de desempenho da consulta. Além dos recursos padrão do painel do consultor Insights, a consulta Insights para o Cloud SQL Enterprise Plus Edition permite fazer o seguinte:

  • Capture e analise os eventos de espera por todas as consultas executadas.
  • Filtre o carregamento do banco de dados agregado por dimensões adicionais, como consultas, tags, tipos de eventos de espera e muito mais.
  • Capture planos de consulta para todas as consultas executadas.
  • Exiba até 200 planos de consulta por minuto.
  • Capture texto de consulta mais longo até 100 kb.
  • Obtenha atualizações quase em tempo real para métricas (na ordem dos segundos).
  • Mantenha uma retenção mais longa de 30 dias de métricas.
  • Obtenha recomendações de índice do Index Advisor.
  • Encerrar uma sessão ou transação de longa duração em consultas ativas.
  • Acesse a solução de problemas assistida por AI ( visualização ).

A tabela a seguir compara os requisitos funcionais e os recursos do consulta Insights para o Cloud SQL Enterprise Edition com Insights de consulta para o Cloud SQL Enterprise Plus Edition.

Área de comparação Consulta Insights para Cloud SQL Enterprise Edition Consulta Insights para Cloud SQL Enterprise Plus Edition
Versões de banco de dados suportadas PostgreSql 9.6 ou mais tarde PostgreSql 12 ou mais tarde
Tipos de máquina suportados Suportado em todos os tipos de máquina Não suportado em instâncias que usam um tipo de máquina de núcleo compartilhado ou em instâncias de leitura de réplicas
Regiões suportadas Locais regionais de nuvem SQL Locais regionais da Cloud SQL Enterprise Plus Edition
Período de retenção de métricas 7 dias 30 dias
Limite de comprimento da consulta Máximo 4500 bytes 100 KB
Plano de consulta Amostra máxima 20 200
Análise de eventos de espera Não disponível Disponível
Recomendações de consultor de índices Não disponível Disponível
Encerrar sessões ou transações de longa duração em consultas ativas Não disponível Disponível
Solução de problemas assistida por Ai ( visualização ) Não disponível Disponível

Ativar Insights de consulta para o Cloud SQL Enterprise Plus Edition

Para ativar a consulta Insights para o Cloud SQL Enterprise Plus Edition, selecione os recursos Ativar Enterprise Plus ao ativar a consulta Insights na sua instância de edição da Cloud SQL Enterprise Plus.

Preços

Não há custo adicional para consultas no Cloud SQL Enterprise Edition ou no Cloud SQL Enterprise Plus Edition Instâncias.

Requisitos de armazenamento

Consulta Insights para o Cloud SQL Enterprise Edition não ocupa nenhum espaço de armazenamento no seu espaço de armazenamento em nuvem SQL. As métricas são armazenadas no monitoramento da nuvem. Para solicitações de API, consulte Preços de monitoramento de nuvem. O monitoramento da nuvem tem uma camada que você pode usar sem custo adicional.

Consulta Insights para o Cloud SQL Enterprise Plus Edition Stores Métricas Dados no mesmo disco conectado à sua instância SQL em nuvem e requer que você mantenha o armazenamento automático aumenta a configuração ativada.

O requisito de armazenamento para sete dias em dados é de aproximadamente 36 GB. Por 30 dias, você precisa de aproximadamente 155 GB. Consulta Insights para o Cloud SQL Enterprise Plus Edition usa até 10 MB de RAM (memória compartilhada). Espera -se que as métricas estejam disponíveis em Insights de consulta dentro de 30 segundos após a conclusão da consulta. As taxas de armazenamento aplicáveis ​​se aplicam .

Antes de começar

Antes de usar as informações de consulta, faça o seguinte.

  1. Adicione funções e permissões necessárias .
  2. Habilite a API de traço de nuvem .
  3. Se você estiver usando o consulta Insights para o Cloud SQL Enterprise Plus Edition, verifique se o aumento do armazenamento automático está ativado para a instância .

Funções e permissões necessárias

Para usar insights de consulta, você precisa conceder uma função predefinida, criar uma função personalizada ou fornecer uma conta de usuário com as permissões de identidade e gerenciamento de acesso necessárias.

Para obter mais informações sobre como conceder funções, consulte Gerenciar acesso .

Para obter as permissões de que você precisa acessar os dados de execução de consulta histórica no painel do consultor Insights, peça ao seu administrador que conceda a você as seguintes funções do IAM no projeto que hospeda a instância da Cloud SQL:

Para obter mais informações sobre como conceder funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Essas funções predefinidas contêm as permissões necessárias para acessar os dados de execução de consulta histórica no painel do consulta Insights. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissões são necessárias para acessar os dados de execução de consulta histórica no painel do consulta Insights:

  • databaseinsights.aggregatedStats.query
  • databaseinsights.timeSeries.query

Você também pode obter essas permissões com funções personalizadas ou outras funções predefinidas .

Por exemplo, em insights de banco de dados, você pode solicitar ao seu administrador que conceda a função Predefined a você. Então, no Cloud SQL, você pode pedir ao seu administrador que conceda roles/databaseinsights.viewer você uma das seguintes funções predefinidas:

Ative a API de traço de nuvem

Para ver os planos de consulta e suas visões de ponta a ponta, seu Google Cloud O projeto deve ter a API de rastreamento em nuvem ativada. Esta configuração permite que o seuGoogle Cloud Projeto Receba dados de rastreamento de fontes autenticadas sem nenhum custo adicional. Esses dados podem ajudá -lo a detectar e diagnosticar problemas de desempenho em sua instância.

Para confirmar que a API do Cloud Trace está ativada, siga estas etapas:

  1. Do Google Cloud Console, vá para APIs e serviços :

    Vá para APIs e serviços

  2. Clique em Ativar APIs e serviços .
  3. Na barra de pesquisa, insira Cloud Trace API .
  4. Se a API ativada for exibida, esta API está ativada e não há nada para você fazer. Caso contrário, clique em Ativar .

Habilitar aumentos de armazenamento automático

Se você estiver usando o consulta Insights para o Cloud SQL Enterprise Plus Edition, verifique se a configuração da instância para ativar o aumento do armazenamento automático permanecerá ativado. Por padrão, esta opção está ativada para instâncias SQL em nuvem.

Se você desativou anteriormente essa configuração de instância e deseja ativar as informações de consulta para a edição do Cloud SQL Enterprise Plus, reative o armazenamento automático aumenta primeiro. Você não pode desativar aumentos automáticos de armazenamento e ativar as informações de consulta para a edição de nuvem SQL Enterprise Plus.

Ativar insights de consulta

Quando você habilita informações de consulta, todas as outras operações são suspensas temporariamente. Essas operações incluem verificações de saúde, registro, monitoramento e outras operações de instância.

Console

Ativar informações de consulta para uma instância

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página de visão geral de uma instância, clique no nome da instância.
  3. No ladrilho de configuração , clique em Editar configuração .
  4. Na seção Personalizar sua instância , expanda as informações da consulta .
  5. Selecione a caixa de seleção Ativar Insights de consulta .
  6. Opcional: selecione Recursos adicionais para sua instância. Alguns recursos estão disponíveis apenas para o Cloud SQL Enterprise Plus Edition.
  7. Recurso Descrição Edição corporativa em nuvem sql Cloud SQL Enterprise Plus Edition
    Ativar recursos Enterprise Plus Selecione esta caixa de seleção para ativar a consulta Insights para o Cloud SQL Enterprise Plus Edition no Cloud SQL. Consulta Insights para o Cloud SQL Enterprise Plus Edition permite encerrar sessões e transações de longa duração em consultas ativas e aumenta a retenção de dados métricos para 30 dias. Você deve selecionar esta caixa de seleção para ativar a solução de problemas ( visualização ) assistida por AI. Não disponível Disponível

    Padrão : desativado
    Análise de consulta ativa Permite revisar os detalhes sobre suas consultas ativamente em execução. Se ativado no Cloud SQL Enterprise Plus Edition, você também poderá encerrar sessões e transações de longa duração. Selecione esta caixa de seleção para ativar as consultas ACTIVE para o seu SQL em nuvem para a instância do PostGresql. Para obter mais informações, consulte Monitor de consultas ativas . Disponível

    Padrão : desativado
    Disponível

    Padrão : desativado
    Recomendações de consultor de índices Fornece recomendações de índice para acelerar o processamento da consulta. Para mais informações, consulte Use o Index Advisor . A ativação do Advisor do índice requer uma reinicialização da instância. Desativar o Advisor Index Advisor não requer uma reinicialização. Não disponível Disponível

    Padrão : desativado
    Solução de problemas assistida por AI Selecione esta caixa de seleção para ativar a detecção de anomalias de desempenho, a causa raiz e a análise da situação e obter recomendações para corrigir problemas com suas consultas e banco de dados. Esse recurso está em visualização e você pode ativar e acessar esse recurso apenas usando o Google Cloud console. Para obter mais informações, consulte Observe e solucionar problemas com a assistência da IA . Não disponível Disponível

    Padrão : desativado
    Armazenar endereços IP do cliente Selecione esta caixa de seleção para ativar o armazenamento de endereços IP do cliente. O Cloud SQL pode armazenar os endereços IP de onde as consultas estão vindo e permitem que você agrupe esses dados para executar métricas contra ele. As consultas vêm de mais de um host. A revisão de gráficos para consultas dos endereços IP do cliente pode ajudar a identificar a fonte de um problema. Disponível

    Padrão : desativado
    Disponível

    Padrão : desativado
    Armazenar tags de aplicativos Selecione esta caixa de seleção para ativar o armazenamento de tags do aplicativo. O armazenamento de tags de aplicativos ajuda a determinar as rotas APIs e Model-View-Controller (MVC) que estão fazendo solicitações e agruparem os dados para executar métricas contra ele. Esta opção requer que você comente consultas com um conjunto específico de tags usando o SQLCommenter Open Source Relation Relation Mapping (ORM) Biblioteca de instrumentação automática. Essas informações ajudam a consultar informações a identificar a fonte de um problema e o MVC do qual o problema está chegando. Os caminhos de aplicativos ajudam você com o monitoramento do aplicativo. Disponível

    Padrão: Desativado
    Disponível

    Padrão: Desativado
    Personalize comprimentos de consulta Selecione esta caixa de seleção para personalizar o limite para o comprimento de uma sequência de consulta. Comprimentos de consulta mais altos são mais úteis para consultas analíticas, mas também exigem mais memória. Qualquer sequência de consulta que se desligue acima do limite especificado se torna truncado na tela.

    Alterar o limite de comprimento da consulta exige que você reinicie a instância. Você ainda pode adicionar tags a consultas que excedem o limite de comprimento.
    Você pode definir o limite em bytes de 256 bytes a 4500 bytes.

    Padrão : 1024 .
    Você pode especificar um limite em bytes de 1024 a 100000 .



    Padrão : 10000 bytes.

    Defina a taxa máxima de amostragem Selecione esta caixa de seleção para definir a taxa máxima de amostragem. A taxa de amostragem é o número de amostras de plano de consulta executadas que são capturadas por minuto em todos os bancos de dados na instância. Aumentar a taxa de amostragem provavelmente fornecerá mais pontos de dados, mas pode aumentar a sobrecarga de desempenho. Para desativar a amostragem, defina o valor como 0 . Você altera esse valor para um número de 0 para 20 .

    Padrão : 5 .
    Você pode aumentar o máximo para 200 para fornecer mais pontos de dados.

    Padrão : 200
  8. Clique em Salvar .

Ativar informações de consulta para várias instâncias

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. Clique no menu More Ações em qualquer linha.
  3. Selecione Ativar Insights de consulta .
  4. Na caixa de diálogo, selecione as informações de consulta Ativar para várias instâncias .
  5. Clique em Habilitar .
  6. Na caixa de diálogo subsequente, selecione as instâncias para as quais você deseja ativar insights de consulta.
  7. Clique em Ativar Insights de consulta .

gcloud

Para habilitar Insights de consulta para uma instância do Cloud SQL usando gcloud , execute gcloud sql instances patch com o sinalizador --insights-config-query-insights-enabled como segue, depois de substituir INSTANCE_ID pelo ID da instância.

    gcloud sql instances patch INSTANCE_ID \
    --insights-config-query-insights-enabled
  

Além disso, use um ou mais dos seguintes sinalizadores opcionais:

  • --insights-config-record-client-address

    Armazena os endereços IP do cliente de onde as consultas vêm e ajudam a agrupar esses dados a executar métricas contra ele. As consultas vêm de mais de um host. A revisão de gráficos para consultas dos endereços IP do cliente pode ajudar a identificar a fonte de um problema.

  • --insights-config-record-application-tags

    Armazena tags de aplicativos que ajudam você a determinar as rotas APIs e Model-View-Controller (MVC) que estão fazendo solicitações e agrupam os dados para executar métricas contra ele. Esta opção exige que você comente consultas com um conjunto específico de tags. Você pode fazer isso usando a biblioteca de auto-instrumentação do SQLCommenter Open-Source-Relational Mapenation Mapping (ORM). Essas informações ajudam a consultar informações a identificar a fonte de um problema e o MVC de onde vem o problema. Os caminhos de aplicativos ajudam você com o monitoramento do aplicativo.

  • --insights-config-query-string-length

    Define o limite padrão de comprimento da consulta. Comprimentos de consulta mais altos são mais úteis para consultas analíticas, mas também exigem mais memória. Alterar o comprimento da consulta exige que você reinicie a instância. Você ainda pode adicionar tags a consultas que excedem o limite de comprimento. Para o Cloud SQL Enterprise Edition, você pode especificar um valor em bytes de 256 a 4500 O comprimento da consulta padrão é 1024 bytes. Para o Cloud SQL Enterprise Plus Edition, você pode especificar um limite em bytes de 1024 a 100000 O valor padrão é 10000 bytes.

  • --query_plans_per_minute

    Por padrão, um máximo de 5 amostras de plano de consulta executadas são capturadas por minuto em todos os bancos de dados na instância. Aumentar a taxa de amostragem provavelmente fornecerá mais pontos de dados, mas pode adicionar uma sobrecarga de desempenho. Para desativar a amostragem, defina esse valor como 0 Para o Cloud SQL Enterprise Edition, você pode alterar o valor de 0 para 20. Para o Cloud SQL Enterprise Plus Edition, você pode aumentar o máximo de até 200 para fornecer mais pontos de dados. Por padrão, a taxa de amostragem máxima é 200 amostras de plano de consulta por minuto em todos os bancos de dados na instância.

Substitua o seguinte:

gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled \
--insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \
--query_plans_per_minute=QUERY_PLANS_PER_MINUTE \
--insights-config-record-application-tags \
--insights-config-record-client-address \
--tier=API_TIER_STRING \
--region=REGION
  

REST v1

Para ativar as informações de consulta para uma instância do Cloud SQL usando a API REST, ligue para o método instances.patch com as configurações insightsConfig .

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

  • PROJECT_ID : o ID do projeto
  • INSTANCE_ID : o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings" : {
     "insightsConfig" : {
       "queryInsightsEnabled" : true,
       "recordClientAddress" : true,
       "recordApplicationTags" : true,
       "queryStringLength" : 1024,
       "queryPlansPerMinute" : 20,
   }
  }
}

Para enviar sua solicitação, expanda uma destas opções:

Você deve receber uma resposta JSON semelhante à seguinte:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2025-03-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Terraform

Para usar o Terraform para ativar as informações de consulta para uma instância de SQL em nuvem, defina o sinalizador query_insights_enabled como true .

Além disso, você pode usar um ou mais dos seguintes sinalizadores opcionais:

  • query_string_length : Para o Cloud SQL Enterprise Edition, você pode especificar um valor em bytes de 256 a 4500 O comprimento da consulta padrão é 1024 bytes. Para o Cloud SQL Enterprise Plus Edition, você pode especificar um limite em bytes de 1024 a 100000 O valor padrão é 10000 bytes.
  • record_application_tags : Defina o valor como true se você deseja gravar tags de aplicativos da consulta.
  • record_client_address : defina o valor como true se desejar gravar o endereço IP do cliente. O padrão é false .
  • query_plans_per_minute : Para o Cloud SQL Enterprise Edition, você pode definir o valor de 0 a 20 O padrão é 5 Para o Cloud SQL Enterprise Plus Edition, você pode aumentar o máximo de até 200 para fornecer mais pontos de dados. A taxa máxima de amostragem padrão é 200 amostras de plano de consulta por minuto em todos os bancos de dados na instância.

Aqui está um exemplo:

  resource "google_sql_database_instance" "INSTANCE_NAME" {
  name                = "INSTANCE_NAME"
  database_version    = "POSTGRESQL_VERSION"
  region              = "REGION"
  root_password       = "PASSWORD"
  deletion_protection = false # set to true to prevent destruction of the resource
  settings {
    tier = "DB_TIER"
    insights_config {
      query_insights_enabled  = true
      query_string_length     = 2048 # Optional
      record_application_tags = true # Optional
      record_client_address   = true # Optional
      query_plans_per_minute  = 10 # Optional
    }
  }
  }
  

Para aplicar sua configuração de terraform em um Google Cloud Projeto, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Shell Cloud .
  2. Defina o padrão Google Cloud Projeto onde você deseja aplicar suas configurações de Terraform.

    Você só precisa executar este comando uma vez por projeto e executá -lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis ​​de ambiente são substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Prepare o diretório

Cada arquivo de configuração do Terraform deve ter seu próprio diretório (também chamado de módulo raiz ).

  1. No Shell Cloud , crie um diretório e um novo arquivo nesse diretório. O nome do arquivo deve ter a extensão .tf - por exemplo, main.tf Neste tutorial, o arquivo é referido como main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o código de exemplo em cada seção ou etapa.

    Copie o código de amostra no recém -criado main.tf

    Opcionalmente, copie o código do GitHub. Isso é recomendado quando o trecho do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve suas alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do Google Provider, inclua a opção -upgrade :

    terraform init -upgrade

Aplique as alterações

  1. Revise a configuração e verifique se os recursos que a Terraform criarão ou atualizam corresponder às suas expectativas:
    terraform plan

    Faça correções para a configuração conforme necessário.

  2. Aplique a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba o "Aplicar completo!" mensagem.

  3. Abra seu Google Cloud Projeto para visualizar os resultados. No Google Cloud Console, navegue até seus recursos na interface do usuário para garantir que a Terraform os tenha criado ou atualize.

Espera -se que as métricas estejam disponíveis em Insights de consulta poucos minutos após a conclusão da consulta. Revise a política de retenção de dados de monitoramento da nuvem .

Os traços de Insights de consulta são armazenados no rastreamento da nuvem. Revise a política de retenção de dados de rastreamento em nuvem .

Veja o painel de Insights de consulta

The Query insights dashboard shows the query load based on factors that you select. Query load is a measurement of the total work for all the queries in the instance in the selected time range. The dashboard provides a series of filters that help you view query load.

To open the Query insights dashboard, follow these steps:

  1. To open the Overview page of an instance, click the instance name.
  2. In the Cloud SQL navigation menu, click Query insights , or click Go to Query insights for more in-depth info on queries and performance on the Instance overview page.
  3. The Query insights dashboard opens. Depending on whether you're using query insights for Cloud SQL Enterprise edition or query insights for Cloud SQL Enterprise Plus edition, the Query insights dashboard shows the following information about your instance:

Cloud SQL Enterprise Plus edition

Shows the Query Insights dashboard for Enterprise Plus edition
          with menus to filter by Database, User, and Client address.
          You can also filter by time range of 1 hour, 6 hours, 1 day
          30 days, or select a custom time range. This graph shows the
          database load by execution time in milliseconds
          for all queries over a one hour period.
  • All queries : Shows database load for all queries for the selected time range. Each query is individually color-coded. To view a point in time for a specific query, hold the pointer over the chart for the query.
  • Database : Filters query load on a specific database or all databases.
  • User : Filters query load from a specific user account.
  • Client address : Filters query load from a specific IP address.
  • Time range : Filters query load by time ranges, such as 1 hour, 6 hours, 1 day, 7 days, 30 days, or a custom range.
  • Wait event types : Filters query load by CPU and Lock wait event types.
  • Queries , Wait event types , Databases , Users , Tags , and Client addresses : Sort by the top dimensions that contribute the most to database load in the chart. See Filter the database load .

Cloud SQL Enterprise edition

Shows the Query insights dashboard, with drop-down menus
         for databases, users, and addresses. To the right of the drop-down
         menus, there's a filter for setting a time range. Also,
         a graph shows the database load for top queries. At the bottom
         of the graph, there are selection boxes for CPU capacity, CPU and
         CPU wait, IO Wait, and Lock Wait and a tab each for queries and tags.
  • Database : Filters query load on a specific database or all databases.
  • User : Filters query load from a specific user account.
  • Client address : Filters query load from a specific IP address.
  • Time range : Filters query load by time ranges, such as 1 hour, 6 hours, 1 day, 7 days, 30 days, or a custom range.
  • Database load graph : Displays the query load graph, based on filtered data.
  • CPU capacity, CPU and CPU wait, IO wait, and Lock wait : Filters loads based on the options that you select. See View the database load for top queries for details about each of these filters.
  • Queries and Tags : Filters query load by either a selected query or a selected SQL query tag. See Filter the database load .

View the database load for all queries

Database query load is a measure of the work (in CPU seconds) that the executed queries in your selected database perform over time. Each running query is either using or waiting for CPU resources, IO resources, or lock resources. Database query load is the ratio of the amount of time taken by all the queries that are completed in a given time window to the wall-clock time.

The top-level query insights dashboard shows the Database load — all top queries graph. Drop-down menus on the dashboard let you filter the graph for a specific database, user, or client address.

Cloud SQL Enterprise Plus edition

Shows the database load graph with a load for CPU capacity, CPU and
         CPU wait, IO Wait, and Lock Wait.

Cloud SQL Enterprise edition

Shows the database load graph with a load for CPU capacity, CPU and
         CPU wait, IO Wait, and Lock Wait.

Colored lines in the graph show the query load, split into categories:

  • CPU capacity : The number of CPUs available on the instance.
  • CPU and CPU Wait : The ratio of the time taken by queries in an active state to wall-clock time. IO and Lock waits don't block queries that are in an active state. This metric might mean that the query is either using the CPU or waiting for the Linux scheduler to schedule the server process running the query while other processes are using the CPU.
  • IO Wait : The ratio of time taken by queries that are waiting for IO to wall-clock time. IO wait includes Read IO Wait and Write IO Wait. If you want a breakdown of information for IO waits, you can see it in Cloud Monitoring. See Cloud SQL metrics for more information. For more information, see the PostgreSQL event table .
  • Lock Wait : The ratio of time taken by queries that are waiting for Locks to wall-clock time. It includes Lock Waits, LwLock Waits, and Buffer pin Lock waits. To see a breakdown of information for lock waits, use Cloud Monitoring. See Cloud SQL metrics for more information.

Colored lines in the graph show per database load by execution time. Review the graph and use the filtering options to explore these questions:

  • Is the query load high? Is the graph spiking or elevated over time? If you don't see a high load, then the problem isn't with your query.
  • How long has the load been high? Is it high only now or has it been high for a long time? Use the range selector to select various time periods to find out how long the problem has lasted. Zoom in to view a time window where query load spikes are observed. Zoom out to view up to one week of the timeline.
  • What's causing the high load? You can select options to examine the CPU capacity, CPU and CPU wait, Lock wait, or IO wait. The graph for each of these options is a different color so that you can spot the one with the highest load. The dark blue line on the graph shows the maximum CPU capacity of the system. It lets you compare the query load with the maximum CPU system capacity. This comparison helps you determine whether an instance is running out of CPU resources.
  • Which database is experiencing the load? Select different databases from the Databases drop-down menu to find the databases with the highest loads.
  • Do specific users or IP addresses cause higher loads? Select different users and addresses from the drop-down menus to identify the ones that are causing higher loads.

Filter the database load

You can filter the database load by queries or tags. If you're using query insights for Cloud SQL Enterprise Plus edition, then you can customize the database load chart to break down the displayed data using any of the following dimensions:

  • All queries

  • Wait event types

  • Eventos de espera

  • Bancos de dados

  • Usuários

  • Etiquetas

  • Client addresses

To customize the database load chart, select a dimension from the Database Load by execution time drop-down.

View the top contributors to database load

To view the top contributors to the database load, you can use the Top dimensions by database load table. The Top dimensions by database load table displays the top contributors for the time period and dimension that you select in the Database Load by execution time chart drop-down. You can modify the time period or dimension to view the top contributors for a different dimension or time period.

In the Top dimensions by data load table, you can select the following tabs.

Aba Descrição
Consultas The table displays the top normalized queries by total execution time. For each query, the data shown in columns are listed as follows:
  • Avg execution time (ms) : average time for the query to execute.
  • Total execution time (ms) : the total execution time taken by the specific query.
  • Avg rows returned : the average number of rows fetched for the query.
  • Times called : the number of times the query was called by the application.
  • %load by SELECTED_DIMENSION : the percentage line chart depicts how the selected dimension is distributed for the specific query.
Wait event types The table displays the list of top wait event types that occurred during the selected time period. This table is only available for query insights for Cloud SQL Enterprise Plus edition.
  • Avg time spent in wait (ms) : average time the queries spent in the specific wait event type.
  • Total time spent in wait (ms) : the total execution time the queries spent in the specific wait event type.
  • Wait event type count : the number of times a specific wait event type occurred in the selected time period.
  • %load by SELECTED_DIMENSION : the percentage line chart depicts how the dimension selected for the database load chart is distributed for the specific wait event type.
Eventos de espera The table displays the list of top wait events that occurred during the selected time period. This table is only available for query insights for Cloud SQL Enterprise Plus edition.
  • Avg time spent in wait (ms) : average time the queries spent in the specific wait event.
  • Total time spent in wait (ms) : the total execution time the queries spent in the specific wait event.
  • Wait event count : the number of times a specific wait event type occurred in the selected time period.
  • %load by SELECTED_DIMENSION : the percentage line chart depicts how the dimension selected for the database load chart is distributed for the specific wait event.
Bancos de dados The table shows the list of top databases that contributed to the load during the chosen time period across all executed queries.
  • Avg time spent in database (ms) : average time the queries spent in the specific database.
  • Total time spent in database (ms) : the total execution time the queries spent in the specific database.
  • %load by SELECTED_DIMENSION : the percentage line chart depicts how the dimension selected for the database load chart is distributed across the specific database.
Usuários The table shows the list of top users for the selected time period across all executed queries.
  • Avg time spent in user (ms) : average time the queries spent on the specific user.
  • Total time spent in user (ms). : the total execution time the queries spent in the specific user.
  • %load by SELECTED_DIMENSION : the percentage line chart depicts how the dimension selected for the database load chart is distributed across the specific user.
Etiquetas For information about tags, Filter by query tags .
Client addresses The table shows the list of top users for the selected time period across all executed queries.
  • Total time spent in client address (ms) : the total execution time the queries spent for a specific client.
  • %load by SELECTED_DIMENSION : the percentage line chart depicts how the dimension selected for the database load chart is distributed across the specific client.

Filter by queries

The Top queries table provides an overview of the queries that cause the most query load. The table shows all the normalized queries for the time range and options selected on the Query insights dashboard. It sorts queries by the total execution time during the time range that you selected.

Cloud SQL Enterprise Plus edition

To sort the table, select a column heading.

Shows the database load graph with a load for queries, with
         filters selected for CPU capacity, CPU and
         CPU wait, IO Wait, and Lock Wait.

Cloud SQL Enterprise edition

To sort the table, select a column heading or a property from Filter queries .

Shows the database load graph with a load for queries, with
         filters selected for CPU capacity, CPU and
         CPU wait, IO Wait, and Lock Wait.

The table shows the following properties:

  • Query : the normalized query string. By default, query insights shows only 1024 characters in the query string. Queries labeled UTILITY COMMAND usually include BEGIN , COMMIT , and EXPLAIN commands or wrapper commands.
  • Database : the database against which the query was run.
  • Recommendations : the suggested recommendations, such as Create indexes , to improve query performance.
  • Load by total time/Load by CPU/Load by IO wait/Load by lock wait : The options by which you can filter specific queries to find the largest load.
  • % load by Queries : The percentage load by individual query.
  • Analyze latency : if you enabled AI-assisted troubleshooting ( Preview ) for this instance, then you can click this link to troubleshoot slow queries.
  • Avg execution time (ms) : the average time for the query to execute.
  • Times called : the number of times the application called the query.
  • Avg rows returned : the average number of rows returned for the query.

Query insights stores and displays only normalized queries.

By default, query insights doesn't collect IP addresses or tag information. You can enable query insights to collect this information and, when required, disable collection.

Query plan traces don't collect or store any constant values and removes any PII information that the constant might show.

For PostgreSQL 9.6 and 10, query insights displays normalized queries, that is, ? replaces the literal constant value. In the following example, the name constant is removed and ? replaces it.

  UPDATE
    "demo_customer"
  SET
    "customer_id" = ?::uuid,
    "name" = ?,
    "address" = ?,
    "rating" = ?,
    "balance" = ?,
    "current_city" = ?,
    "current_location" = ?
  WHERE
    "demo_customer"."id" = ?
  

For PostgreSQL version 11 and later, $1 , $2 , and similar variables replace literal constant values.

  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
  

Filter by query tags

To troubleshoot an application, you must first add tags to your SQL queries . Query load tags provide a breakdown of the query load of the selected tag over time.

Query insights provides application-centric monitoring to diagnose performance problems for applications built using ORMs. If you're responsible for the entire application stack, query insights provides query monitoring from an application view. Query tagging helps you find issues at higher-level constructs, such as with the business logic or a microservice.

You might tag queries by the business logic, for example, the payment, inventory, business analytics, or shipping tags. You can then find the query load that the various business logic create. For example, you might observe unexpected events, such as spikes for a business analytics tag at 1 PM or unexpected growth for a payment service trending over the previous week.

To calculate the Database load for tag , query insights uses the amount of time taken by every query that uses the tag that you select. The tool calculates the completion time at the minute boundary by using wall-clock time.

On the query insights dashboard, to view the tags table, select Tags . The table sorts tags by their total load by total time.

Shows the Query Insights dashboard, with load for tags and a list of tags.

You can sort the table by selecting a property from Filter tags , or by clicking a column heading. The table shows the following properties:

  • Action, Controller, Framework, Route, Application, DB driver : Each property that you added to your queries appears as a column. At least one of these properties must be added if you want to filter by tags.
  • Load by total time/Load by CPU/Load by IO wait/Load by lock wait : Options to filter specific queries to find the largest load for each option.
  • Avg execution time (ms) : The average time for the query to run.
  • Avg rows returned : The average number of rows returned for the query.
  • Times called : The number of times the application called the query.
  • Database : The database against which the query was run.

View query details for a specific query or tag

To determine whether a specific query or tag is the root cause of the problem, do the following from the Queries tab or Tags tab, respectively:

  1. To sort the list in descending order, click the Load by total time header.
  2. Click the query or tag at the top of the list. It has the highest load and is taking more time than the others.

The Query details page opens and shows the details of the selected query or tag.

Examine a specific query load

The Query details page for a selected query appears as follows:

Shows the database load and latency graphs for a
         specific query.

The Database load — specific query graph shows a measure of the work (in CPU seconds) that your normalized query has performed in your selected query over time. To calculate load, it uses the amount of time taken by the normalized queries that are completed at the minute boundary to the wall-clock time. At the top of the table, the first 1024 characters of the normalized query, with literals removed for aggregation and PII reasons, are displayed.

Shows the database load graph with a load for a specific query, with
         filters selected for CPU capacity, CPU and CPU wait, IO wait, and Lock
         wait.

As with the total queries graph, you can filter the load for a specific query by Database , User , and Client address . Query load is split into CPU capacity , CPU and CPU wait , IO wait , and Lock wait .

Examine a specific tagged query load

The dashboard for a selected tag appears as follows. For example, if all queries from a microservices payment are tagged as payment , you can see the amount of query load that's trending by viewing the tag payment .

Shows the database load and latency graphs on the page for a
         specific tag.

The Database load — specific tags graph shows a measure of the work (in CPU seconds) that queries matching your selected tags have performed in your selected database over time. As with the total queries graph, you can filter the load for a specific tag by Database , User , and Client address .

Examine operations in a sampled query plan

A query plan takes a sample of your query and breaks it down into individual operations. It explains and analyzes each operation in the query.

The Query plan samples graph shows all the query plans running at particular times and the amount of time each plan took to run. You can change the rate at which query plan samples are captured per minute. See Enable Query Insights .

A graph for sample query plans, with the time when they
         were run at the bottom of the graph (x axis) and the number of seconds
         they ran on the right (y axis).

By default, the panel on the right shows the details for the sample query plan that takes the longest time, as visible on the Query plan samples graph. To see the details for another sample query plan, click the relevant circle on the graph. Expanded details show a model of all the operations in the query plan.

Each operation shows the latency, rows returned, and the cost of the operation. When you select an operation, you can see more details, such as shared hit blocks, the type of schema, loops, and plan rows.

The query plan shows the latency and cost for each operation
         run for the query.

Try to narrow down the problem by looking into the following questions:

  1. What's the resource consumption?
  2. How does it relate to other queries?
  3. Does consumption change over time?

Examine latency

Latency is the time taken for the normalized query to complete, in wall-clock time. You use the Latency graph to examine latency on the query or tag. The latency dashboard shows the 50th, 95th, and 99th percentile latencies to find outlier behaviors.

The following image shows the database load graph at the 50th percentile for a specific query with filters selected for CPU capacity, CPU and CPU wait, IO wait, and Lock wait.

Shows the query latency graph for a specific
         query with filters selected for CPU capacity, CPU and CPU wait,
         IO wait, and Lock wait.

The latency of parallel queries is measured in wall-clock time even though the query load can be higher for the query due to multiple cores being used to run part of the query.

Try to narrow down the problem by looking into the following questions:

  • What's causing the high load? Select options to look at the CPU capacity, CPU and CPU wait, I/O wait, or Lock wait.
  • How long has the load been high? Is it only high now? Or has it been high for a long time? Change the time range to find the date and time that the load started performing poorly.
  • Were there spikes in latency? Change the time window to study the historical latency for the normalized query.

Trace the source of the problem

When you find the areas and times where the load was the highest, identify the source of the problem by using tracing to drill down further.

To help you identify the specific source of the problem, such as a model, view, controller, route, host, or user, query insights provides an in-context end-to-end application trace view. This view helps you understand what's going on at the Database Layer for a specific request and to find the source of a problematic query by model, view, controllers, and route.

If you enable OpenCensus or OpenTelemetry , opencensus span information is sent to the database along with the tag information inside SQL comments. Any traces from the application to Cloud Logging are linked with database query plan traces to help identify the source of the problem.

Click the End to end tab in the Sample Query screen to look at the in-context trace.

Select an End-to-end tag to view specific information
         about the tag. The Summary shows the RPCs and Total Duration in ms for
         each operation for that tag.

To determine the client and user causing the problem, use the Top client addresses and Top users tables to find the highest loads. You can add a user or IP address to the filter to further analyze a specific user or client address. The details in the tables include the percentage of the query load, the average execution time in milliseconds, and the times called.

The image shows that for top client addresses, the load was
         100%, the average execution time was 19,568 seconds, and the times
         called was 1,226. For top users, the user postgres had 100% of the load,
         had an average execution time of 19,568 ms, and was called 1,226
         times.

You can use Cloud Trace to see end-to-end tracing for each step in the query plan. On the query insights dashboard, click the View in trace link to open the Cloud Trace tool. The trace graph shows all the traces that have been run for the selected period.

For details, see Finding and viewing traces .

Add tags to SQL queries

Tagging SQL queries simplifies application troubleshooting. You can use sqlcommenter to add tags to your SQL queries either automatically or manually.

Use sqlcommenter with ORM

When you use ORM instead of directly writing SQL queries, you might not find application code that's causing performance challenges. You might also have trouble analyzing how your application code affects query performance. To tackle this issue, Query Insights provides an open source library called sqlcommenter. This library is useful for developers and administrators using ORM tools to detect which application code is causing performance problems.

If you're using ORM and sqlcommenter together, the tags are automatically created. You don't need to add or change code in your application.

You can install sqlcommenter on the application server. The instrumentation library allows application information related to your MVC framework to be propagated to the database along with the queries as a SQL comment. The database picks up these tags and starts recording and aggregating statistics by tags, which are orthogonal to statistics aggregated by normalized queries. Query insights shows the tags so that you know which application is causing the query load and can find the application code that's causing performance problems.

When you examine results in SQL database logs, they appear as follows:

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

Supported tags include the controller name, route, framework, and action.

The set of ORM tools in sqlcommenter is supported for the following programming languages:

Pitão
  • Django
  • psicopg2
  • Sqlalchemy
  • Frasco
Java
  • Hibernar
  • Primavera
Rubi
  • Trilhos
Node.js
  • Knex.js
  • Sequelize.js
  • Express.js

For more information about sqlcommenter and how to use it in your ORM framework, see the sqlcommenter documentation .

Use sqlcommenter to add tags

If you're not using ORM, you must manually add sqlcommenter tags or comments in the correct SQL comment format to your SQL query. You must also augment each SQL statement with a comment containing a serialized key-value pair. Use at least one of the following keys:

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

Query insights drops all other keys.

Disable query insights

Console

To disable query insights for a Cloud SQL instance by using the Google Cloud console, follow these steps:

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. To open the Overview page of an instance, click the instance name.
  3. On the Configuration tile, click Edit configuration .
  4. In the Configuration options section, expand Query insights .
  5. Clear the Enable Query insights checkbox.
  6. Clique em Salvar .

gcloud

To disable query insights for a Cloud SQL instance by using gcloud , run gcloud sql instances patch with the --no-insights-config-query-insights-enabled flag as follows, after replacing INSTANCE_ID with the ID of the instance.

gcloud sql instances patch INSTANCE_ID \
  --no-insights-config-query-insights-enabled

DESCANSAR

To disable query insights for a Cloud SQL instance by using the REST API, call the instances.patch method with queryInsightsEnabled set to false as follows.

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

  • project-id : The project ID.
  • instance-id : The instance ID.

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corpo JSON da solicitação:

{
  "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } }
}

Para enviar sua solicitação, expanda uma destas opções:

Você deve receber uma resposta JSON semelhante à seguinte:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2021-01-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Disable query insights for Cloud SQL Enterprise Plus edition

To disable query insights for Cloud SQL Enterprise Plus edition, do the following:

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. To open the Overview page of an instance, click the instance name.
  3. Clique em Editar .
  4. In the Customize your instance section, expand Query insights .
  5. Clear the Enable Enterprise Plus features checkbox.
  6. Clique em Salvar .

O que vem a seguir