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

Esta página descreve 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, o que leva a latências altas. Sem uma interface visual, pode ser tedioso 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 altas latências 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çõ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 de dados para os 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 das 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 você é 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 acessar a página de insights de bloqueios e transações, 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 do banco de dados do Cloud Spanner (roles/spanner.databaseReader) são necessárias para acessar a página de insights de bloqueios e transações:

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

Usuário com controle de acesso granular

Se você for um usuário de controle de acesso granular, confira se:

  • Ter o Visualizador do Cloud Spanner(roles/spanner.viewer).
  • Só têm privilégios de controle de acesso detalhado e recebem a função do sistema spanner_sys_reader ou uma das funções de membro.
  • Selecione spanner_sys_reader ou uma função de membro como sua função de sistema atual 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 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 que indique um pico 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 na 99ª percentil, siga estas etapas:

  1. No console do 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 do Google Cloud mostra 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. Verifique se o gráfico atualizado 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 que os erros estão aumentando 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 os insights de bloqueio

O painel "Insights de bloqueio" ajuda você a conferir o tempo de espera de bloqueio em uma instância ou em um banco de dados selecionado. Ele pode ajudar a confirmar se latências altas são devido a contenções de bloqueio.

Verificar o tempo de espera de bloqueio alto

Para verificar 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 mostra o gráfico Total lock wait, 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, como mostra o seletor de tempo no canto superior direito do painel de insights de bloqueio. Para conferir dados de um intervalo 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, selecione o banco de dados que mostra o maior tempo de espera de bloqueio.

    O gráfico Tempo de espera de bloqueio total é 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 de tempo de espera de bloqueio por intervalos de linha.

  3. Clique no gráfico e arraste horizontalmente para expandir o horário em que um pico de latência está visível.

Painel de insights do Bloqueio

Analisar os dados de espera de bloqueio

A tabela Insights de bloqueio 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 de início 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 de cima.
  • Espera de bloqueio (segundos): o tempo de espera de bloqueio cumulativo de conflitos de bloqueio registrado para todas as colunas no intervalo de chaves de linha, em segundos.
  • Espera de bloqueio (%): o tempo de espera dos conflitos de bloqueio registrado para todas as colunas no intervalo de chaves de linha como uma porcentagem do tempo total de espera de bloqueio para todos os intervalos de chaves de linha no banco de dados.

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

Tabela de insights do Bloqueio

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

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

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

A tabela mostra os dados que correspondem ao filtro.

Conferir solicitações de bloqueio de exemplo

O painel Solicitações de bloqueio de amostra mostra detalhes sobre solicitações de bloqueio de amostra de transações conflitantes.

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

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

  • Exemplo de nome de coluna: a coluna que encontrou o conflito de bloqueio no intervalo da 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 dos insights do Bloqueio

Identificar transações conflitantes usando insights de transação

O painel "Insights de transações" ajuda você a conferir 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 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 de transações na barra de navegação à esquerda.

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

    Como alternativa, no painel "Insights de bloqueio", clique em Visualizar transações para filtrar a leitura ou gravação de transações em uma coluna de amostra específica.

    Os dados mostrados são de 1 hour por padrão, como mostra o 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 do banco de dados selecionado.

Painel de insights sobre transações

Analisar os dados da 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 do sistema SPANNER_SYS.TXN_STATS nas seguintes colunas:

  • Impressão digital: o hash da tag de transação, se ela existir. 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.
  • Ler coluna da tabela: as colunas que a transação leu.
  • Tabela.coluna gravada: as colunas em que a transação foi gravada.
  • Latência média (segundos): o tempo médio necessário 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 um valor.

A tabela mostra os dados que correspondem ao filtro.

Tabela "Insights sobre transações"

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

Para conferir informações detalhadas sobre uma transação, como a que mostra a latência mais alta, clique no link Impressão digital na respectiva linha 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: o tempo médio que a primeira operação da transação leva para ser confirmada ou cancelada.
    • Latência média de confirmação: o tempo médio necessário para executar a operação de confirmação.
    • Contagem total de tentativas: o número total de tentativas de transação.
    • Contagem de aborto total: é o número total de tentativas de transação que foram abortadas, incluindo aquelas que foram abortadas antes de chamar o método de confirmação da transação.
  • Gráficos que mostram esses valores.

    Além disso, o gráfico Participantes médios 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 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.

A seguir