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

Nesta página, descrevemos como usar insights de bloqueio e insights de transações 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 guiar você pelas seguintes etapas:

  1. Verifique se há um pico nas latências usando o Monitoring 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ções.

Preços

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

Configurações de região

Os insights de bloqueio e de transações 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 das 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ção.

Funções exigidas

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

Usuário do Identity and Access Management (IAM)

Para ter 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 seguintes papéis do IAM 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ê for um usuário de controle de acesso detalhado, faça o seguinte:

  • Ter o papel de Leitor do Cloud Spanner(roles/spanner.viewer)
  • Tem apenas privilégios de controle de acesso refinados e recebe o papel de sistema spanner_sys_reader ou um dos papéis de membro dele.
  • Selecione o papel spanner_sys_reader ou um 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 refinados do sistema de controle de acesso.

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

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

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

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 Função como Write e Percentil como 99th.

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

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

Se você observar que a utilização da CPU não está atingindo o pico e os erros aumentam nas operações por segundo, é provável que os picos de latência sejam devido à contenção 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 em um banco de dados selecionado. Ele pode ajudar a confirmar se as altas latências são devido a contenções de bloqueio.

Verificar se o tempo de espera de bloqueio está alto

Para verificar se há um tempo de espera 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 de cada banco de dados na instância.

    Os dados mostrados são de 1 hour por padrão, conforme mostrado no seletor de tempo no canto superior direito do painel de insights de bloqueio. Para ver dados de 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 total de bloqueio é 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 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.

Painel de insights sobre bloqueio

Analisar 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 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.
  • Espera de bloqueio: o tempo de espera total 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 de cima.
  • Espera de bloqueio (segundos): o tempo de espera de bloqueio cumulativo dos conflitos de bloqueio registrados 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 de espera total de bloqueio para todos os intervalos de chave de linha no banco de dados.

Para correlacionar os dados no 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.

Conferir exemplos de solicitações de bloqueio

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

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

  • Exemplo de nome de coluna: 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 de transações, que mostra as transações que podem estar competindo por bloqueios.

Página de detalhes sobre bloqueio de insights

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

O painel de insights da transação ajuda a visualizar a latência nas 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 altas latências devido a contenções de bloqueio.

Conferir as latências das transações

Para conferir 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 de leitura ou gravação em uma coluna de amostra específica.

    Os dados mostrados são de 1 hour por padrão, conforme mostrado no seletor de tempo no canto superior direito do painel de insights da transação.

O painel mostra os seguintes gráficos:

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

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

Painel de insights da transação

Analisar os dados da transação

Você pode 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:

  • Fingerprint: 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 de 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 de leitura da transação.
  • Gravação da coluna na tabela: as colunas em que a transação fez gravações.
  • 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 na 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 "Insights da transação"

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

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

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

  • Uma barra com valores numéricos para cada uma destas 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 decorridos desde a primeira operação da transação para confirmar ou cancelar.
    • 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 de transação: 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, inclusive as que são canceladas antes de chamar o método de confirmação da transação.
  • Gráficos que representam 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. Aplique as práticas recomendadas para reduzir a contenção de bloqueio.

A seguir