Encontrar pontos de acesso no seu banco de dados

Neste documento, descrevemos como usar o painel de insights de pontos de acesso para detectar pontos de acesso no banco de dados do Spanner.

Visão geral dos insights de ponto de acesso

Os pontos de acesso causam latência no banco de dados do Spanner. O painel de insights sobre pontos de acesso ajuda a detectar as divisões afetadas por pontos de acesso. Siga estas etapas para determinar se os pontos de acesso estão causando latência e, em caso afirmativo, como resolver o problema:

  1. Abra o painel.
  2. Determine se os pontos de acesso precisam da sua intervenção.
  3. Identificar divisões quentes problemáticas.

Os insights de pontos de acesso estão disponíveis em configurações de região única, multirregional e birregional.

Preços

Não há custo adicional para os insights de ponto de acesso.

Retenção de dados

As políticas de retenção de dados para os gráficos de insights de pontos de acesso e a tabela de divisões TopN são baseadas nas tabelas SPANNER_SYS.SPLIT_STATS_TOP_* subjacentes. Para políticas de retenção específicas, consulte Retenção de dados de estatísticas de divisão ativa.

Funções exigidas

Talvez você precise de diferentes papéis e permissões do Identity and Access Management (IAM), dependendo de ser um usuário do IAM ou um usuário de controle de acesso refinado.

Usuário do IAM

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

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

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

Usuário do controle de acesso refinado

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

  • Ter o papel de Leitor do Cloud Spanner (roles/spanner.viewer)
  • Ter privilégios de controle de acesso refinado e receber o papel do sistema spanner_sys_reader ou um dos papéis de membro dele.
  • Selecione spanner_sys_reader ou um papel de membro como seu papel atual do sistema na página Visão geral do banco de dados.

Para mais informações, consulte a visão geral do controle de acesso refinado e os papéis do sistema de controle de acesso refinado.

Abrir o painel de insights de ponto de acesso

O painel Insights de pontos de acesso mostra a porcentagem de pico de uso de CPU de divisão. Essa métrica é uma porcentagem abstrata de 0 a 100 que reflete a quantidade de CPU usada quando as linhas em uma divisão são acessadas.

Para ver o painel Insights de pontos de acesso de um banco de dados, faça o seguinte:

  1. No console do Google Cloud , abra a página do Spanner.

    Acessar o Spanner

  2. Selecione uma instância na lista.

  3. No menu de navegação, clique na guia Insights de pontos de acesso.

  4. No campo banco de dados, selecione um banco de dados na lista. O painel mostra a pontuação de pico de uso de CPU de divisão do banco de dados.

O painel inclui os seguintes elementos:

  • Gráfico de pontuação de pico de uso de CPU de divisão: uma pontuação de uso da CPU mais alta (por exemplo, perto de 100) indica que a divisão está quente e provavelmente está causando um ponto de acesso no servidor em comparação com pontuações mais baixas.
  • Campo de banco de dados: filtra as informações de divisões quentes em um banco de dados específico ou em todos os bancos de dados.
  • Filtro de período: filtra o uso de CPU das divisões de pico em incrementos de 1 minuto até um total de 6 horas.
  • Tabela das N principais divisões: mostra a lista das principais divisões classificadas por pontuações de uso de CPU de divisão.

O painel de insights de pontos de acesso no Spanner, mostrando um gráfico de pico de uso de CPU de divisão, um seletor de banco de dados, um filtro de período e uma tabela das N divisões mais ativas.

Noções básicas sobre os dados na tabela de divisões TopN: a tabela de divisões TopN preenche os dados das tabelas SPANNER_SYS.SPLIT_STATS_TOP_* com base no período selecionado. Para mais informações, consulte Retenção de dados de estatísticas de divisão ativa.

Interpretação de linhas das tabelas 10MINUTE ou HOUR: as linhas provenientes de SPANNER_SYS.SPLIT_STATS_TOP_10MINUTE ou SPANNER_SYS.SPLIT_STATS_TOP_HOUR representam dados agregados nos respectivos intervalos. Conforme descrito em Agregação de eventos de tabela, o CPU_USAGE_SCORE nessas linhas é a pontuação máxima vista em qualquer subintervalo de um minuto, e UNSPLITTABLE_REASONS é uma união de motivos.

Determinar se as áreas de risco precisam de intervenção

Se você notar um pico ou uma elevação no gráfico que corresponda à latência geral e uma pontuação de uso de CPU de divisão de pico alta persistente, talvez seja necessário investigar mais.

Analise o gráfico para responder a estas perguntas:

  • Qual banco de dados está passando pela degradação da latência? Selecione diferentes bancos de dados na lista Bancos de dados para encontrar os bancos de dados com a maior latência. Para descobrir qual banco de dados tem a maior carga, você também pode analisar o gráfico de latência para bancos de dados no console do Google Cloud .

    Um gráfico de linhas intitulado "Pontuação de pico de uso de CPU de divisão", mostrando a pontuação de pico de uso de CPU de divisão ao longo do tempo. O gráfico mostra um pico, que pode indicar um
hotspot e possíveis problemas de
latência.

  • A latência está alta? A latência é alta em comparação com a latência esperada para a carga de trabalho? O gráfico está piscando ou aumentando ao longo do tempo? Se você não notar uma latência alta, os pontos de acesso não são um problema.

  • A pontuação de pico de uso de CPU de divisão está em 100%? O gráfico está piscando ou aumentando ao longo do tempo? Se você não encontrar porcentagens de uso de CPU de pico de divisão de 100% persistentes por pelo menos 10 minutos, os pontos de acesso podem não ser um problema. Se a porcentagem de uso de CPU de divisão de pico for alta por mais de 10 minutos, investigue mais para ver se o banco de dados tem níveis de latência maiores do que o esperado.

Se você notar porcentagens de uso de CPU de divisão de pico de 100% por mais de 10 minutos, talvez os pontos de acesso precisem da sua intervenção. Em seguida, você pode continuar a jornada de depuração identificando as divisões mais usadas no banco de dados.

Identificar divisões de acesso frequente problemáticas

Para identificar uma divisão potencialmente problemática que tenha pontos de acesso, consulte a seção Divisões TopN no console do Google Cloud , conforme mostrado a seguir.

Uma tabela das "divisões TopN" no Spanner, que lista as divisões potencialmente problemáticas. A tabela inclui colunas para "Fim do intervalo", "Início da divisão", "Limite de divisão", "Pontuação de uso de CPU de divisão", "Tabelas afetadas" e "Motivos para não dividir".

A tabela de divisões TopN fornece uma visão geral das divisões que podem estar ativas durante o período escolhido, classificadas da mais recente para a mais antiga. O número de divisões TopN é limitado a 100.

Para os gráficos, o Spanner busca dados da tabela de estatísticas de divisões TopN, com uma granularidade de um minuto. O valor de cada ponto de dados nos gráficos representa o valor médio em um intervalo de um minuto.

A tabela mostra as seguintes propriedades:

  • Fim do intervalo: a data e a hora em que o pico de uso da CPU termina.
  • Início da divisão: a chave inicial do intervalo de linhas na divisão. Se o início da divisão for <begin>, isso indica o início do intervalo de chaves do banco de dados.
  • Limite de divisão: a chave de limite do intervalo de linhas na divisão. Se a chave de limite for <end>, ela vai indicar o fim do intervalo de chaves do banco de dados.
  • Pontuação de uso de CPU de divisão: uma pontuação abstrata entre 0 e 100 que reflete quanta CPU é usada por acessos às linhas na divisão em um único servidor. Use a pontuação de uso da CPU para ajudar a avaliar se você tem pontos de acesso com uso excessivo.
  • Tabelas afetadas: as tabelas com linhas que podem estar na divisão.
  • Motivos de não divisão: uma matriz de motivos pelos quais o Spanner não pode dividir ainda mais uma divisão ativa. A presença de valores aqui indica que a divisão baseada em carga não pode mitigar o ponto de acesso pelos motivos listados. Para mais informações, consulte Tipos de UNSPLITTABLE_REASONS.

Analisar motivos de não divisão

A tabela TopN splits permite que você veja quais divisões específicas são afetadas por esses motivos em determinados momentos, conforme mostrado na coluna Unsplittable reasons.

Exemplo de fluxo de trabalho de diagnóstico

Veja um fluxo de trabalho típico para depurar pontos de acesso usando o painel:

  1. Observe o problema de desempenho: observe o aumento da latência ou erros no aplicativo.
  2. Abra os insights de pontos de acesso: acesse o painel de insights de pontos de acesso no console do Google Cloud para o banco de dados do Spanner relevante. Selecione o período correspondente ao problema.
  3. Analisar o gráfico:
    • Verifique se o gráfico Pontuação de pico de uso de CPU de divisão apresenta valores altos sustentados, por exemplo, >50%, especialmente se aproximando de 100% por pelo menos 10 minutos.
  4. Identifique as divisões afetadas e correlacione as descobertas: se o uso da CPU estiver alto, acesse a tabela N divisões principais. Filtre ou classifique para encontrar as divisões com a maior pontuação de uso de CPU de divisão durante o período de impacto. Analise a coluna UNSPLITTABLE_REASONS para estas divisões principais:
    • Pontuação alta de uso de CPU de divisão e motivos não divisíveis: é um forte sinal de que o problema de desempenho está relacionado a pontos de acesso que o Spanner não consegue resolver automaticamente. O tipo de motivo, como HOT_ROW ou MOVING_HOT_SPOT, fornece uma pista crucial.
    • Pontuação alta de uso de CPU de divisão e nenhum motivo de não divisão: o ponto de acesso pode ser novo, e o Spanner ainda pode estar no processo de divisão. Como alternativa, o problema pode estar respondendo a mudanças na carga de trabalho, o que não exige nenhuma ação sua.
  5. Entenda os motivos: observe os códigos específicos na matriz UNSPLITTABLE_REASONS.
  6. Mitigar: com base nos motivos identificados, consulte os tipos de UNSPLITTABLE_REASONS para explicações detalhadas e estratégias de mitigação recomendadas, que geralmente envolvem mudanças no design do esquema ou ajustes na carga de trabalho.

A seguir