Identifique transações que podem causar latências elevadas

Esta página descreve como usar as estatísticas de bloqueio e as estatísticas de transações para identificar transações que originam latências elevadas.

Vista 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 bloqueios ocorre quando muitas transações requerem acesso frequente ao mesmo bloqueio, o que leva a latências elevadas. Sem uma interface visual, pode ser difícil identificar as transações problemáticas que originam um número elevado de problemas de contenção de bloqueios.

As operações do Spanner adquirem bloqueios quando fazem parte de uma transação de leitura/escrita. As transações só de leitura não adquirem bloqueios.

O Spanner ajuda a identificar transações que originam latências elevadas através das seguintes etapas:

  1. Verifique se existe um pico nas latências através da monitorização do Spanner.
  2. Verifique se existem problemas de contenção de bloqueios através das Estatísticas de bloqueios.
  3. Identifique transações problemáticas através das Estatísticas de transações.

Preços

Não existe custo adicional para as estatísticas de bloqueio ou as estatísticas de transações.

Configurações de região

As estatísticas de bloqueio e as estatísticas de transações estão disponíveis nas configurações regionais e multirregionais.

Retenção de dados

A retenção máxima de dados para os dados apresentados nos painéis de controlo Estatísticas de bloqueio e Estatísticas de transações é de 30 dias. Para os gráficos, os dados são obtidos de tabelas SPANNER_SYS.*, que têm um período de retenção máximo de 30 dias.

Para mais informações sobre estas tabelas e a retenção de dados, consulte os artigos Estatísticas de bloqueios e Estatísticas de transações.

Funções necessárias

Precisa de diferentes funções e autorizações do IAM, consoante seja um utilizador do IAM ou um utilizador do controlo de acesso detalhado.

Utilizador da gestão de identidade e de acesso (IAM)

Para receber as autorizações de que precisa para ver a página Estatísticas de bloqueios e transações, peça ao seu administrador que lhe conceda as seguintes funções de IAM na instância:

As seguintes autorizações na função Leitor da base de dados do Cloud Spanner (roles/spanner.databaseReader) são necessárias para ver a página Estatísticas de bloqueios e transações:

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

Utilizador com controlo de acesso detalhado

Se for um utilizador do controlo de acesso detalhado, certifique-se de que:

  • Ter o papel Cloud Spanner Viewer(roles/spanner.viewer)
  • Têm privilégios de controlo de acesso detalhados e é-lhes atribuída a função do sistema spanner_sys_reader ou uma das respetivas funções de membro.
  • Selecione a função spanner_sys_reader ou uma função de membro como a função atual do sistema na página de vista geral da base de dados.

Para mais informações, consulte os artigos Acerca do controlo de acesso detalhado e Funções do sistema de controlo de acesso detalhado.

Verifique se existe um pico nas latências através da monitorização do Spanner

Pode usar o Cloud Monitoring para definir alertas para métricas que excedam os limites especificados para todos os pedidos.

Se receber um alerta que indica um pico nas latências de uma instância, pode confirmá-lo no painel de controlo de monitorização do Spanner, que apresenta gráficos de várias métricas importantes. O gráfico Latência ajuda a ver latências elevadas nos percentis 50 e 99.

Para confirmar um pico nas latências de escrita no percentil 99, siga estes passos:

  1. Na Google Cloud consola, aceda à página Instâncias do Spanner.

    Aceda às instâncias do Spanner

  2. Clique no nome da instância.

    A Google Cloud consola apresenta uma vista geral da instância.

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

    A Google Cloud consola apresenta gráficos de dados para a instância.

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

  5. Verifique o gráfico atualizado para ver se apresenta picos.

Um gráfico que mostra as latências de escrita no percentil 99

Se observar que a utilização da CPU não está a aumentar e os erros aumentam nas operações por segundo, é provável que os aumentos da latência se devam a contestações de bloqueio.

Verifique se existem problemas de contenção de bloqueios através das Estatísticas de bloqueios

O painel de controlo Estatísticas de bloqueio ajuda a ver o tempo de espera de bloqueio numa instância ou numa base de dados selecionada. Pode ajudar a confirmar se as latências elevadas se devem a contestações de bloqueios.

Verifique se existe um tempo de espera de bloqueio elevado

Para verificar se existe um tempo de espera de bloqueio elevado, siga estes passos:

  1. Clique em Estatísticas de bloqueio no menu de navegação.

    A Google Cloud consola apresenta o gráfico Tempo de espera total do bloqueio, que mostra o tempo de espera do bloqueio para cada base de dados na instância.

    Os dados apresentados são relativos a 1 hour por predefinição, conforme indicado no seletor de tempo no canto superior direito do painel de controlo Estatísticas de bloqueio. Para ver dados para um intervalo mais amplo, selecione outra opção, como 1 day.

    Para mais informações, consulte o artigo Trabalhar com gráficos.

  2. No seletor Bases de dados na parte superior, selecione a base de dados que apresenta o tempo de espera de bloqueio mais elevado.

    O gráfico Tempo de espera total do bloqueio é atualizado para mostrar dados apenas para a base de dados selecionada.

    Além disso, outro gráfico, Tempo de espera de bloqueio por intervalo de linhas, apresenta 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 é visível um pico de latência.

O painel de controlo de estatísticas de bloqueios

Analise os dados de espera de bloqueio

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

  • Chave de início do intervalo de linhas: a chave de linha onde ocorreu o conflito de bloqueio. Quando o conflito envolve um intervalo de linhas, o valor representa a chave inicial do intervalo. Um sinal de mais (+) significa um intervalo.
  • Tempo de espera do bloqueio: o tempo total de espera do bloqueio representado visualmente numa barra horizontal. Por predefinição, a tabela usa esta coluna para ordenações e mostra a chave de início do intervalo de linhas com o tempo de espera de bloqueio mais elevado na parte superior.
  • Tempo de espera do bloqueio (segundos): o tempo de espera do bloqueio cumulativo de conflitos de bloqueio registados para todas as colunas no intervalo de chaves de linhas, em segundos.
  • Tempo de espera de bloqueio (%): o tempo de espera dos conflitos de bloqueio registados para todas as colunas no intervalo de chaves de linhas como uma percentagem do tempo de espera de bloqueio total para todos os intervalos de chaves de linhas na base 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 realçada. Por outro lado, selecione a caixa de verificação de uma linha na tabela para ver a linha relacionada no gráfico.

A tabela Bloquear estatísticas

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

  1. Clique na caixa de texto junto a Filtrar.

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

A tabela mostra os dados que correspondem ao filtro.

Veja pedidos de bloqueio de amostra

O painel Pedidos de bloqueio de exemplo mostra detalhes sobre pedidos de bloqueio de exemplo de transações em conflito.

Para ver informações de pedido de bloqueio de exemplo 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 exemplo: a coluna que encontrou o conflito de bloqueio no intervalo de chaves da linha.
  • Modo de bloqueio: o modo de bloqueio pedido.
  • Ver transações: um link para a página Estatísticas de transações, que mostra as transações que podem estar a competir por bloqueios.

A página de detalhes das estatísticas de bloqueio

Identifique transações em conflito através das estatísticas de transações

O painel de controlo Estatísticas de transações ajuda a ver a latência nas transações numa instância ou numa base de dados selecionada. Pode ajudar a identificar as transações que podem estar a originar latências elevadas devido a contestações de bloqueios.

Veja as latências das transações

Para ver a latência das transações, siga estes passos:

  1. Clique em Estatísticas de transações no menu de navegação do lado esquerdo.

  2. No seletor Bases de dados na parte superior, selecione a base de dados que apresenta o tempo de espera de bloqueio mais elevado.

    Em alternativa, no painel de controlo Bloquear estatísticas, clique em Ver transações para filtrar transações de leitura ou escrita numa coluna de exemplo específica.

    Por predefinição, os dados apresentados são relativos a 1 hour, conforme indicado no seletor de tempo no canto superior direito do painel de controlo Estatísticas de transações.

O painel de controlo apresenta os seguintes gráficos:

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

  • O gráfico Latência média (por transação) apresenta a latência de cada transação para a base de dados selecionada.

O painel de controlo de estatísticas de transações

Analise os dados de transações

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

  • Impressão digital: o hash da etiqueta de transação, se existir. Caso contrário, o hash é calculado com base nas operações envolvidas na transação. O valor é um link que direciona para a página de detalhes da transação.
  • Etiqueta de transação: a etiqueta de transação opcional para a transação. Os dados estatísticos de várias transações que têm a mesma string de etiqueta são agrupados numa única linha com a etiqueta TRANSACTION_TAG correspondente à string de etiqueta.
  • Tabelas afetadas: as tabelas afetadas pela transação.
  • Table.column Read: as colunas que a transação leu.
  • Table.column Written: as colunas para as quais a transação escreveu.
  • Latência média (segundos): média de segundos necessários para realizar a transação. Por predefinição, a tabela é ordenada por esta coluna por ordem descendente.

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 realçada.

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

  1. Clique junto a Filtrar.

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

A tabela mostra os dados que correspondem ao filtro.

A tabela Estatísticas de transações

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

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

É apresentada a página Detalhes da transação. Além da tabela de detalhes na parte superior, são apresentadas 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 escritos pela transação.
    • Latência média: a média de segundos decorridos desde a primeira operação da transação até à confirmação ou anulação.
    • 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 abort count: o número total de tentativas de transação que foram anuladas, incluindo as que foram anuladas antes de chamar o método de confirmação da transação.
  • Gráficos que representam estes 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.

A página de detalhes Estatísticas de transações

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

O que se segue