Identificar transações que podem causar altas latências

Nesta página, descrevemos como usar os insights de bloqueio e de transação para identificar transações que levam a altas latências.

Visão geral

Para garantir a consistência de várias transações simultâneas, o Spanner usa bloqueios para controlar o acesso aos dados. A contenção de bloqueio ocorre quando muitas transações exigem acesso frequente ao mesmo bloqueio, levando a altas latências. Sem uma interface visual, pode ser tedioso identificar as transações problemáticas que levam a um alto número de problemas de contenção de bloqueio.

As operações do Spanner adquirem bloqueios quando fazem parte de uma transação de leitura e gravação. As transações somente leitura não adquirem bloqueios.

O Spanner ajuda a identificar transações que levam a altas latências ao orientar você nas etapas a seguir:

  1. Verifique se há um pico nas latências usando o Spanner Monitoring.
  2. Verifique se há problemas de contenção de bloqueio usando os insights de bloqueio.
  3. Identifique transações problemáticas usando os insights de transações.

Preços

Não há custo extra para os insights de bloqueio ou de transação.

Configurações de região

Os insights de bloqueio e de transação estão disponíveis nas configurações regionais e multirregionais.

Retenção de dados

A retenção máxima dos dados mostrados nos painéis "Insights de bloqueio" e "Insights de transações" é de 30 dias. Para gráficos, os dados são recuperados de tabelas SPANNER_SYS.*, que têm um período de armazenamento máximo de 30 dias.

Para mais informações sobre essas tabelas e retenção de dados, consulte Estatísticas de bloqueio e Estatísticas de transações.

Funções exigidas

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

Usuário do Identity and Access Management (IAM)

Para receber as permissões necessárias para visualizar a página "Insights de bloqueio e transação", peça ao administrador para conceder a você os papéis do IAM a seguir na instância:

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

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

Usuário de controle de acesso granular

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

  • Tenha o Leitor do Cloud Spanner(roles/spanner.viewer)
  • Têm apenas privilégios de controle de acesso refinados e recebem o papel de sistema spanner_sys_reader ou um dos papéis de membro.
  • Selecione o spanner_sys_reader ou um papel de membro como o papel atual do sistema na página de visão geral do banco de dados.

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

Verificar se há um pico nas latências usando o Spanner Monitoring

É possível usar o Cloud Monitoring para definir alertas para métricas que excedem os limites especificados para todas as solicitações.

Se você receber um alerta que indique um pico nas latências de uma instância, confirme-o no painel do Spanner Monitoring, que mostra gráficos de várias métricas importantes. O gráfico de Latência ajuda a visualizar altas latências nos percentis 50 e 99.

Para confirmar um pico nas latências de gravação no 99o percentil, siga estas etapas:

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

    Acessar "Instâncias do Spanner"

  2. Clique no nome da instância.

    O console do Google Cloud exibe uma visão geral da instância.

  3. Clique em Monitoramento no menu de navegação.

    O console do Google Cloud exibe gráficos de dados da instância.

  4. No gráfico Latência, defina a Função como Write e o Percentil como 99th.

  5. Verifique se o gráfico atualizado mostra picos.

Um gráfico mostrando latências de gravação no 99o percentil

Se você observar que o uso da CPU não está aumentando e os erros aumentam nas operações por segundo, é provável que os picos de latência sejam devido às contenções de bloqueio.

Verificar se há problemas de contenção de bloqueio usando os insights de bloqueio

O painel de insights de bloqueio ajuda a visualizar o tempo de espera de bloqueio em uma instância ou um banco de dados selecionado. Isso ajuda a confirmar se as altas latências são devido a contenções de bloqueio.

Verificar se o tempo de espera de bloqueio é alto

Para verificar se o tempo de espera de bloqueio é alto, siga estas etapas:

  1. Clique em Bloquear insights no menu de navegação.

    O console do Google Cloud exibe o gráfico Espera de bloqueio total, que mostra o tempo de espera de bloqueio para cada banco de dados na instância.

    Os dados mostrados são para 1 hour por padrão, como mostrado no seletor de tempo no canto superior direito do painel "Bloquear insights". Para conferir dados em um intervalo mais amplo, selecione outra opção, como 1 day.

    Para mais informações, consulte Como trabalhar com gráficos.

  2. No seletor Bancos de dados na parte superior, selecione o banco de dados que mostra o maior tempo de espera de bloqueio.

    O gráfico Espera de bloqueio total é atualizado para mostrar apenas os dados do banco de dados selecionado.

    Além disso, outro gráfico, Espera de bloqueio por intervalo de linhas, exibe os gráficos do tempo de espera de bloqueio por intervalos de linhas.

  3. Clique no gráfico e arraste horizontalmente para expandir a hora em que um pico de latência é visível.

O painel "Bloquear insights"

analisar os dados de espera de bloqueio

A tabela Lock Insights mostra as seguintes colunas das tabelas do sistema SPANNER_SYS.LOCK_STATS:

  • Chave de início do intervalo de linhas: a chave de linha em que ocorreu o conflito de bloqueio. Quando o conflito envolve um intervalo de linhas, o valor representa a chave inicial do intervalo. Um sinal de adição (+) indica um intervalo.
  • Espera de bloqueio: o tempo total de espera de bloqueio representado visualmente em uma barra horizontal. Por padrão, a tabela usa essa coluna para classificações e mostra a chave de início do intervalo de linhas com o maior tempo de espera de bloqueio na parte superior.
  • Espera de bloqueio (segundos): o tempo de espera de bloqueio cumulativo dos conflitos registrados para todas as colunas no intervalo de chave de linha, em segundos.
  • Espera de bloqueio (%): o tempo de espera dos conflitos de bloqueio registrado para todas as colunas no intervalo de chave de linha como uma porcentagem do tempo total de espera de bloqueio para todos os intervalos de chave de linha no banco de dados.

Para correlacionar os dados do gráfico Espera de bloqueio por intervalo de linhas com os dados da tabela, selecione uma linha. A linha relacionada aparece destacada. Por outro lado, marque a caixa de seleção de uma linha na tabela para ver a linha relacionada no gráfico.

A tabela "Bloquear insights"

Para filtrar os dados na tabela, faça o seguinte:

  1. Clique na caixa de texto ao lado de Filtrar.

  2. Selecione uma propriedade, escolha um operador e especifique um valor.

A tabela mostra os dados que correspondem ao filtro.

Ver exemplos de solicitações de bloqueio

O painel Amostras de solicitações de bloqueio mostra detalhes sobre solicitações de bloqueio de amostra de transações concorrentes.

Para ver informações de amostra de solicitação de bloqueio para uma chave de início de intervalo de linhas, clique no link relacionado na tabela.

A tabela mostra as seguintes colunas de informações:

  • Nome da coluna de amostra: a coluna que encontrou o conflito de bloqueio no intervalo de chave de linha.
  • Modo de bloqueio: o modo de bloqueio solicitado.
  • Visualizar transações: um link para a página Insights da transação, que mostra as transações que podem estar disputando bloqueios.

Página de detalhes dos insights do bloqueio

Identifique transações concorrentes usando insights de transações

O painel "Insights sobre transações" mostra a latência das transações em uma instância ou um banco de dados selecionado. Ele pode ajudar a identificar as transações que podem estar levando a altas latências devido a contenções de bloqueio.

Conferir as latências das transações

Para visualizar a latência das transações, siga estas etapas:

  1. Clique em Insights da transação no painel de navegação à esquerda.

  2. No seletor Bancos de dados na parte superior, selecione o banco de dados que mostra o maior tempo de espera de bloqueio.

    Como alternativa, no painel "Bloquear insights", clique em Visualizar transações para filtrar transações que leem ou gravam em uma coluna de amostra específica.

    Os dados mostrados são para 1 hour por padrão, como mostrado no seletor de tempo no canto superior direito do painel "Insights de transações".

O painel mostra os seguintes gráficos:

  • O gráfico Latência média (todas as transações) mostra a latência de todas as transações na instância.

  • O gráfico Latência média (por transação) mostra a latência de cada transação no banco de dados selecionado.

Painel de insights de transações

Analisar os dados da transação

É possível visualizar e analisar dados de cada transação na tabela abaixo dos gráficos. A tabela mostra dados de métricas das tabelas do sistema SPANNER_SYS.TXN_STATS nas seguintes colunas:

  • Impressão digital: o hash da tag de transação, se houver. Caso contrário, o hash será calculado com base nas operações envolvidas na transação. O valor é um link que leva à página "Detalhes da transação".
  • Tag da transação: é a tag de transação opcional para a transação. Os dados estatísticos de várias transações que têm a mesma string de tag são agrupados em uma única linha com o rótulo TRANSACTION_TAG correspondente à string da tag.
  • Tabelas afetadas: as tabelas afetadas pela transação.
  • Leitura de tabela.coluna: as colunas lidas pela transação.
  • Table.column Gravação: as colunas em que a transação gravou.
  • Latência média (segundos): média de segundos necessários para realizar a transação. Por padrão, a tabela é classificada por essa coluna em ordem decrescente.

Para correlacionar os dados do gráfico Latência média (por transação) com os dados da tabela, selecione uma linha no gráfico. A linha correspondente na tabela aparece destacada.

Para filtrar os dados na tabela, faça o seguinte:

  1. Clique ao lado de Filtrar.

  2. Selecione uma propriedade, escolha um operador e especifique um valor.

A tabela mostra os dados que correspondem ao filtro.

Tabela de insights da transação

Visualizar informações detalhadas sobre uma transação

Para ver informações detalhadas sobre uma transação, como a que tem a latência mais alta, clique no link Impressão digital na respectiva linha da tabela.

A página Detalhes da transação é exibida. Além da tabela de detalhes na parte superior, ela mostra as seguintes informações:

  • Uma barra que mostra valores numéricos para cada uma dessas métricas:

    • Média de bytes: o número médio de bytes gravados pela transação.
    • Latência média: a média de segundos da primeira operação da transação para confirmação ou cancelamento.
    • Latência média de confirmação: a média de segundos necessários para executar a operação de confirmação.
    • Contagem total de tentativas: o número total de tentativas de transação.
    • Contagem total de cancelamentos: o número total de tentativas de transação que foram canceladas, incluindo aquelas que foram canceladas antes de chamar o método de confirmação da transação.
  • Gráficos que retratam esses valores.

    Além disso, o gráfico Média de participantes mostra o número médio de participantes em cada tentativa de confirmação.

Página de detalhes "Insights de transações"

Investigue se o formato da transação pode ser otimizado para reduzir as latências. Considere aplicar as práticas recomendadas para reduzir a contenção de bloqueio.

A seguir