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:
- Verifique se existe um pico nas latências através da monitorização do Spanner.
- Verifique se existem problemas de contenção de bloqueios através das Estatísticas de bloqueios.
- 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:
-
Visitante do Cloud Spanner (
roles/spanner.viewer
) -
Leitor da base de dados do Cloud Spanner (
roles/spanner.databaseReader
)
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:
Na Google Cloud consola, aceda à página Instâncias do Spanner.
Clique no nome da instância.
A Google Cloud consola apresenta uma vista geral da instância.
Clique em Monitorização no menu de navegação.
A Google Cloud consola apresenta gráficos de dados para a instância.
No gráfico Latência, defina Função como
Write
e Percentil como99th
.Verifique o gráfico atualizado para ver se apresenta picos.
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:
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, como1 day
.Para mais informações, consulte o artigo Trabalhar com gráficos.
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.
Clique no gráfico e arraste horizontalmente para expandir a hora em que é visível um pico de latência.
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.
Para filtrar os dados na tabela, faça o seguinte:
Clique na caixa de texto junto a Filtrar.
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.
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:
Clique em Estatísticas de transações no menu de navegação do lado esquerdo.
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.
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:
Clique junto a Filtrar.
Selecione uma propriedade, selecione um operador e especifique um valor.
A tabela mostra os dados que correspondem ao filtro.
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.
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.