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

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

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 disputa de bloqueio ocorre quando muitas transações exigem acesso frequente ao mesmo bloqueio, resultando em latências altas. Sem uma interface visual, pode ser difícil identificar as transações problemáticas que levam a um grande 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/gravação. As transações somente leitura não adquirem bloqueios.

O Spanner ajuda a identificar transações que levam a latências altas seguindo estas etapas:

  1. Verifique se há um pico nas latências usando o monitoramento do Spanner.
  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ção.

Preços

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

Configurações regionais

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

Retenção de dados

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

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

Funções exigidas

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

Usuário do Identity and Access Management (IAM)

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

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

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

Usuário de controle de acesso refinado

Se você usa o controle de acesso refinado, verifique se:

  • Ter a função Leitor do Cloud Spanner(roles/spanner.viewer)
  • Ter apenas privilégios de controle de acesso detalhado e receber o papel de sistema spanner_sys_reader ou um dos papéis de membro dele.
  • Selecione spanner_sys_reader ou uma função de membro como sua função atual do sistema na página de visão geral do banco de dados.

Para mais informações, consulte Sobre o controle de acesso detalhado e Funções do sistema de controle de acesso detalhado.

Verificar um pico nas latências usando o monitoramento do Spanner

Use o Cloud Monitoring para definir alertas de métricas que excedam os limites especificados para todas as solicitações.

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

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

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

    Acessar as instâncias do Spanner

  2. Clique no nome da instância.

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

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

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

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

  5. Confira o gráfico atualizado para ver se ele mostra picos.

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

Se você observar que a utilização 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 disputas de bloqueio.

Verificar problemas de contenção de bloqueio usando o Lock insights

O painel "Insights de bloqueio" ajuda a ver o tempo de espera de bloqueio em uma instância ou em um banco de dados selecionado. Isso ajuda a confirmar se as altas latências são devido a disputas de bloqueio.

Verificar o tempo de espera de bloqueio alto

Para verificar se há um tempo de espera de bloqueio alto, siga estas etapas:

  1. Clique em Insights de bloqueio no menu de navegação.

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

    Os dados mostrados são de 1 hour por padrão, conforme indicado pelo seletor de tempo no canto superior direito do painel "Insights de bloqueio". Para ver dados de um período maior, 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 de cima, escolha o banco de dados que mostra o maior tempo de espera de bloqueio.

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

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

  3. Clique e arraste o gráfico na horizontal para expandir a hora em que um pico de latência está visível.

O painel "Bloquear insights"

Analisar os dados de espera de bloqueio

A tabela Insights de bloqueio mostra as seguintes colunas das tabelas de sistema SPANNER_SYS.LOCK_STATS:

  • Chave de início do intervalo de linha: 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 (+) significa um intervalo.
  • Tempo de 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 de conflitos de bloqueio registrado para todas as colunas no intervalo de chave de linha, em segundos.
  • Espera de bloqueio (%): o tempo de espera dos conflitos de bloqueio registrados 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 no gráfico Tempo de espera de bloqueio por intervalo de linhas com os dados na 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 Filtro.

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

A tabela mostra os dados que correspondem ao filtro.

Ver exemplos de solicitações de bloqueio

O painel Exemplo de solicitações de bloqueio mostra detalhes sobre solicitações de bloqueio de amostra de transações em disputa.

Para conferir informações de solicitação de bloqueio de amostra 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:

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

A página de detalhes "Bloquear insights"

Identificar transações em disputa usando os insights de transação

O painel "Insights de transação" ajuda você a ver a latência das transações em uma instância ou em um banco de dados selecionado. Ele pode ajudar a identificar as transações que podem estar causando latências altas devido a disputas de bloqueio.

Ver as latências das transações

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

  1. Clique em Insights de transações na navegação à esquerda.

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

    Outra opção é clicar em Ver transações no painel de insights de bloqueio para filtrar transações de leitura ou gravação em uma coluna de amostra específica.

    Os dados mostrados são de 1 hour por padrão, conforme indicado pelo seletor de período 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 do banco de dados selecionado.

O painel de insights da transação

Analisar os dados de transação

É possível conferir e analisar os dados de cada transação na tabela abaixo dos gráficos. A tabela mostra dados de métricas das tabelas de 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 de detalhes da transação.
  • Tag da transação: a tag da 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 de tag.
  • Tabelas afetadas: as tabelas afetadas pela transação.
  • Leitura de Table.column: as colunas lidas pela transação.
  • Table.column Written: 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 no gráfico Latência média (por transação) com os dados na tabela, selecione uma linha no gráfico. A linha correspondente na tabela aparece em destaque.

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

  1. Clique ao lado de Filtrar.

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

A tabela mostra os dados que correspondem ao filtro.

A tabela "Insights da transação"

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

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

A página Detalhes da transação vai aparecer. Além da tabela de detalhes na parte de cima, ele mostra as seguintes informações:

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

    • Bytes médios: o número médio de bytes gravados pela transação.
    • Latência média: a média de segundos tomada da primeira operação da transação a ser confirmada ou cancelada.
    • Latência média de confirmação: a média de segundos necessários para realizar a operação de confirmação.
    • Total de tentativas: o número total de tentativas de transação.
    • 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 mostram 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 dos insights da transação

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

A seguir