Usar insights de consulta para melhorar o desempenho da consulta

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

Introdução

Os insights de consulta ajudam a detectar, diagnosticar e evitar problemas de desempenho relacionados aos bancos de dados do Cloud SQL. Ele é compatível com monitoramento intuitivo e fornece informações de diagnóstico que ajudam você a ir além da detecção para identificar a causa raiz de problemas de desempenho.

O Query insights ajuda a melhorar o desempenho de consulta do Cloud SQL, orientando você pelas seguintes etapas:

Consultar insights para o Cloud SQL Enterprise Plus

Se você estiver usando o Cloud SQL edição Enterprise Plus, poderá acessar outros recursos nos insights de consulta para realizar diagnósticos avançados de desempenho de consulta. Além dos recursos padrão do painel de insights de consulta, os insights de consulta para a edição Enterprise Plus do Cloud SQL permitem:

  • Capturar texto de consulta mais longo, de até 20 KB
  • Manter uma retenção de métricas de 30 dias
  • Receber recomendações de índice do consultor de índice
  • Encerrar uma sessão em consultas ativas

A tabela a seguir compara os requisitos funcionais e os recursos dos insights de consulta do Cloud SQL Enterprise com os do Cloud SQL Enterprise Plus.

Área de comparação Insights de consulta para a edição Enterprise do Cloud SQL Consultar insights para o Cloud SQL Enterprise Plus
Versões de banco de dados com suporte

Todas as versões das seguintes instâncias:

  • SQL Server Web
  • SQL Server Standard
  • SQL Server Enterprise

O Query Insights não é compatível com instâncias da edição Express do SQL Server.

SQL Server Enterprise versão 2019 ou 2022
Tipos de máquina compatíveis Compatível com todos os tipos de máquina Não oferece suporte a instâncias que usam um tipo de máquina com núcleo compartilhado
Regiões compatíveis Locais regionais do Cloud SQL Locais regionais da edição do Cloud SQL Enterprise Plus
Período de armazenamento de métricas 7 dias 30 dias
Limite máximo de comprimento da consulta 4.500 bytes 20 KB
Recomendações do consultor de índice Indisponível Disponível
Encerrar sessões em consultas ativas Indisponível Disponível

Para ativar os insights de consulta na edição Cloud SQL Enterprise Plus durante a pré-visualização da sua instância do Cloud SQL Enterprise Plus, siga as etapas em Ativar os insights de consulta na edição Cloud SQL Enterprise Plus.

Preços

Não há custo extra para gerar o Query insights. Além disso, não há custo para ativar os insights de consulta do Cloud SQL edição Enterprise Plus, que está em pré-lançamento.

Requisitos de armazenamento

Os insights de consulta armazenam dados de métricas na instância e exigem que você mantenha a configuração de aumento automático de armazenamento ativada. Sujeito a taxas de armazenamento aplicáveis.

Antes de começar

Antes de usar os insights de consulta, faça o seguinte:

  1. Adicione papéis e permissões necessários.
  2. Verifique se a opção Ativar aumento automático de armazenamento está ativada para a instância.

Papéis e permissões necessárias

Para usar os insights de consulta, é necessário conceder papéis com as permissões necessárias de gerenciamento de identidade e acesso ou fornecer uma conta de usuário com as permissões necessárias.

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Para receber as permissões necessárias para acessar dados históricos de execução de consultas no painel de insights de consultas, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto que hospeda a instância do Cloud SQL:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para acessar dados históricos de execução de consultas no painel de insights de consultas. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

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

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

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Por exemplo, no Database Insights, você pode pedir ao administrador para conceder a você o papel predefinido de Leitor do Database Insights (roles/databaseinsights.viewer). Em seguida, no Cloud SQL, peça ao administrador para conceder a você um dos seguintes papéis predefinidos:

Ativar aumento automático de armazenamento

Verifique se a configuração da instância para ativar o aumento automático de armazenamento permanece ativada.

Se você tiver desativado essa configuração de instância, ative novamente o aumento automático de armazenamento antes de ativar os insights de consulta.

Ativar o Query Insights

Os usuários com acesso ao painel do Cloud SQL podem acessar as métricas dos insights de consulta. Se você tiver permissão para atualizar instâncias, poderá ativar os insights de consulta. Para uma lista de permissões necessárias para instâncias do Cloud SQL, consulte Controle de acesso de projetos do Cloud SQL. Se você não tiver essas permissões e quiser ativar o Query Insights nas suas instâncias, entre em contato com o administrador.

Console

Ativar o Query Insights para uma instância

  1. No console do Google Cloud, 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 dela.
  3. No bloco Configuração, clique em Editar configuração.
  4. Na seção Personalizar sua instância, abra Insights de consulta.
  5. Marque a caixa de seleção Ativar Query insights.
  6. Opcional. Selecione um ou mais dos seguintes recursos adicionais de insights de consulta:
  7. Personalizar o tamanho da consulta

    Padrão: 1024

    Define o limite de tamanho da consulta como um valor especificado de 256 a 4.500 bytes. Comprimentos de consulta mais altos são mais úteis para consultas analíticas, mas também exigem mais memória. Se você mudar o tamanho da consulta, reinicie a instância.

  8. Clique em Salvar.

Ativar insights de consulta para várias instâncias

  1. No console do Google Cloud, 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 Ativar o Query Insights.
  4. Na caixa de diálogo, marque a caixa de seleção Ativar o Query Insights para várias instâncias.
  5. Clique em Ativar.
  6. Na caixa de diálogo seguinte, selecione as instâncias para as quais você quer ativar o Query Insights.
  7. Clique em Ativar o Query Insights.

gcloud

Para ativar o Query Insights em uma instância do Cloud SQL usando gcloud, execute gcloud sql instances patch com a flag --insights-config-query-insights-enabled da seguinte maneira, 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 uma ou mais das seguintes flags opcionais:

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

    Define o limite de tamanho da consulta padrão como um valor especificado de 256 a 4.500 bytes. O tamanho de consulta padrão é 1024 bytes. Comprimentos de consulta mais altos são mais úteis para consultas analíticas, mas também exigem mais memória. Se você mudar o tamanho da consulta, vai precisar reiniciar a instância.

Substitua:

gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled \
--insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \
--tier=API_TIER_STRING \
--region=REGION
  

REST v1

Para ativar o Query Insights em uma instância do Cloud SQL usando a API REST, chame o método instances.patch com as configurações insightsConfig.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • 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" : true } }
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "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"
}

Terraform

Para usar o Terraform e ativar o Query Insights em uma instância do Cloud SQL, defina a flag query_insights_enabled como true.

Além disso, é possível usar uma ou mais das seguintes flags opcionais:

  • query_string_length: o padrão é 1024 e pode ser configurado com um valor entre 256 e 4500 em bytes.
  • record_application_tags: defina o valor como true se quiser registrar as tags do aplicativo na consulta.
  • record_client_address: defina o valor como true se quiser gravar o endereço IP do cliente.
  • query_plans_per_minute: o padrão é 5 e pode ser configurado com um valor entre 5 e 20.

Veja um exemplo:

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

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As 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 precisa ter o 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 precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

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

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet 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 as 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

Aplique as alterações

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

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.

As métricas devem ser disponibilizadas nos insights de consulta alguns minutos após a conclusão da consulta.

Ativar os insights de consulta para o Cloud SQL Enterprise Plus

É possível ativar os insights de consulta do Cloud SQL Enterprise Plus na sua instância do Cloud SQL somente usando o console do Google Cloud.

  1. No console do Google Cloud, 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 dela.
  3. Clique em Editar.
  4. Na seção Armazenamento, verifique se a caixa de seleção Ativar aumento automático de armazenamento está marcada.
  5. Na seção Personalizar sua instância, abra Insights de consulta.
  6. Marque a caixa de seleção Ativar recursos da edição Enterprise Plus.
  7. Depois de ativar os insights de consulta para a edição Enterprise Plus do Cloud SQL, você pode atualizar os seguintes campos:

    • Personalizar tamanho da consulta: especifique o limite, em bytes, do tamanho da consulta. Você pode especificar um número de 256 a 20480. Qualquer string de consulta que ultrapasse o limite especificado é truncada na tela. Um limite de comprimento de consulta maior requer mais memória. O valor padrão é 10240 bytes (10 KB).

  8. Clique em Salvar.

Visualizar o painel do Query insights

O painel do Query insights mostra a carga de consulta com base nos fatores selecionados. A carga de consulta é a medida 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 você a visualizar a carga de consulta.

Para abrir o painel do Query insights, siga estas etapas:

  1. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  2. Selecione a guia Insights de consulta no painel de navegação à esquerda ou clique no link Acessar insights de consulta para mais informações sobre consultas e desempenho.

O painel do Query insights é aberto. Ele mostra as seguintes informações sobre a instância:

Mostra o painel de insights de consulta, com menus suspensos
         para bancos de dados. À direita dos menus suspensos, há um filtro para definir um intervalo de tempo.

  • Bancos de dados: filtra a carga de consulta em um banco de dados específico ou em todos os bancos de dados.
  • Intervalo de tempo: filtra a carga da consulta por períodos, 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 de consulta com base nos dados filtrados.
  • Consultas e bancos de dados: filtra a carga de consulta por uma consulta ou um banco de dados selecionado. Consulte Filtrar a carga do banco de dados.

Visualizar a carga do banco de dados de todas as consultas

A carga de consulta do 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 consulta do banco de dados é a proporção entre o tempo gasto por todas as consultas concluídas em uma determinada janela de tempo e o tempo real decorrido.

O painel de insights sobre consultas de nível superior mostra o gráfico Carga do banco de dados por tempo de execução. Os menus suspensos no painel permitem filtrar o gráfico para todos os bancos de dados ou um banco de dados específico.

Mostra todas as consultas executadas para um banco de dados escolhido.

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

  • A consulta está alta? O gráfico está aumentando ou se elevando ao longo do tempo? Se você não vê uma carga alta, o problema não está nas consultas.
  • Quanto tempo a carga tem sido alta? Ela é alta apenas agora ou tem sido alta por muito tempo? Use o seletor de intervalo para selecionar vários períodos e descobrir quanto tempo durou o problema. Aumente o zoom para conferir uma janela de tempo em que os picos de carga de consulta são observados. Diminua o zoom para ver até uma semana na linha do tempo.
  • Qual banco de dados está passando pela carga? Selecione diferentes bancos de dados no menu suspenso "Bancos de dados" para encontrar os bancos de dados com as cargas mais altas.

Filtrar a carga do banco de dados

É possível filtrar a carga do banco de dados por consultas. Se você estiver usando os insights de consulta para a edição Cloud SQL Enterprise Plus, 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

  • Bancos de dados

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.

Conferir os principais contribuintes para a carga do banco de dados

Para conferir os principais contribuintes para a carga do banco de dados, use a tabela Principais dimensões por carga do banco de dados. A tabela Principais dimensões por carga do banco de dados mostra os principais colaboradores para o período e a dimensão selecionados no menu suspenso Carga do banco de dados por tempo de execução. É possível modificar o período ou a dimensão para conferir os principais colaboradores de outra dimensão ou período.

Na tabela Principais dimensões por carga de dados, é possível selecionar as seguintes guias.

Tab Descrição
Consultas A tabela mostra as principais consultas normalizadas por tempo de execução total. Para cada consulta, os dados mostrados nas colunas são listados da seguinte maneira:
  • Tempo médio de execução (ms): o 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: o número médio de linhas buscadas para a consulta.
  • Horários chamados: o número de vezes que a consulta foi chamada pelo aplicativo.
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): o tempo médio que as consultas passaram no banco de dados específico.
  • Tempo total gasto no banco de dados (ms): o tempo total de execução que as consultas gastaram no banco de dados específico.

Filtrar por consultas

A tabela Consultas fornece uma visão geral das consultas que geram a maior parte da carga. A tabela mostra todas as consultas normalizadas para a janela de tempo e opções selecionadas no painel do Query insights. Ela classifica as consultas pelo tempo total de execução durante o período selecionado.

Para classificar a tabela, selecione um cabeçalho de coluna. A tabela mostra as seguintes propriedades:

  • Consulta: a string de consulta normalizada. Por padrão, os insights de consulta mostram apenas 1.024 caracteres na string de consulta.
  • Banco de dados: o banco de dados em que a consulta foi executada.
  • Tempo médio de execução (ms): o tempo médio de execução da consulta.
  • Tempo total de execução (ms): o tempo total de execução da consulta.
  • Horários chamados: o número de vezes que o aplicativo chamou a consulta.
  • Média de linhas retornadas: o número médio de linhas retornadas para a consulta.

O Query insights armazena e exibe apenas consultas normalizadas.

Desativar insights de consulta

Console

Para desativar o Query insights em uma instância do Cloud SQL usando o console do Google Cloud, siga estas etapas:

  1. No console do Google Cloud, 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 dela.
  3. No bloco Configuração, clique em Editar configuração.
  4. Na seção Opções de configuração, expanda Query insights.
  5. Desmarque a caixa de seleção Ativar Query insights.
  6. Clique em Save.

gcloud

Para desativar os insights de consulta em uma instância do Cloud SQL usando gcloud, execute gcloud sql instances patch com a flag --no-insights-config-query-insights-enabled da seguinte maneira, depois de substituir INSTANCE_ID pelo ID da instância.

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

REST

Para desativar o Query Insights de uma instância do Cloud SQL usando a API REST, chame o método instances.patch com queryInsightsEnabled definido como false.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • 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 a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "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 os insights de consulta para o Cloud SQL Enterprise Plus

Para desativar os insights de consulta na edição Enterprise Plus do Cloud SQL, faça o seguinte:

  1. No console do Google Cloud, 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 dela.
  3. Clique em Editar.
  4. Na seção Personalizar sua instância, abra Insights de consulta.
  5. Desmarque a caixa de seleção Ativar recursos da edição Enterprise Plus.
  6. Clique em Salvar.

A seguir