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 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:
- Verifique se há um pico nas latências usando o monitoramento do Spanner.
- Verifique se há problemas de contenção de bloqueio usando os insights de bloqueio.
- 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 recuperados de SPANNER_SYS.*
tabelas, que têm uma retenção máxima
período 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ê vai precisar de diferentes papéis e permissões do IAM, dependendo se se você for 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 acessar 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:
-
Leitor do Cloud Spanner (
roles/spanner.viewer
) -
Leitor de banco de dados do Cloud Spanner (
roles/spanner.databaseReader
)
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ê é um usuário de controle de acesso refinado, certifique-se de:
- Tenha o Leitor do Cloud Spanner(
roles/spanner.viewer
) - Só têm privilégios de controle de acesso detalhado e recebem o papel do sistema
spanner_sys_reader
ou uma das funções de membro. - Selecione as funções de
spanner_sys_reader
ou participantes 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 Papéis do sistema de controle de acesso detalhado.
Verificar se há um pico nas latências usando o Spanner Monitoring
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 no 99o percentil, siga estas etapas:
No console do Google Cloud, acesse a página Instâncias do Spanner.
Clique no nome da instância.
O console do Google Cloud exibe uma visão geral da instância.
Clique em Monitoramento no menu de navegação.
O console do Google Cloud exibe gráficos de dados para o instância.
No gráfico Latência, defina Função como
Write
e Percentil como99th
.Verifique se o gráfico atualizado mostra picos.
Se você observar que a utilização da CPU não está aumentando, e os erros atingem operações por segundo, é provável que os picos de latência se devam ao bloqueio contenções.
Verificar problemas de contenção de bloqueio usando os insights de bloqueio
O painel "Insights de bloqueio" ajuda a conferir o tempo de espera de bloqueio em uma instância ou em um banco de dados selecionado. Ele ajuda a confirmar se há devido a contenções de bloqueio.
Verificar se o tempo de espera de bloqueio é alto
Para verificar o tempo de espera de bloqueio alto, siga estas etapas:
Clique em Bloquear insights no menu de navegação.
O console do Google Cloud mostra o gráfico Total de espera 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, como mostra o seletor de tempo no canto superior direito do painel de insights de bloqueio. Para acessar os dados Para um intervalo maior, selecione outra opção, como1 day
.Para mais informações, consulte Como trabalhar com gráficos.
No seletor Bancos de dados na parte de cima, selecione o banco de dados que mostra o tempo de espera de bloqueio mais alto.
O gráfico Espera de bloqueio total é 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 para tempo de espera de bloqueio por intervalos de linhas.
Clique no gráfico e arraste horizontalmente para expandir a hora em que há uma latência pico está visível.
Analisar os dados de espera de bloqueio
A tabela Lock Insights mostra as seguintes colunas da
SPANNER_SYS.LOCK_STATS
tabelas do sistema:
- 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. De padrão, a tabela usa essa coluna para classificações e mostra a chave de início do intervalo de linhas com o tempo de espera de bloqueio mais alto no topo.
- 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. Inversamente, selecione a caixa de seleção para 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 ao lado de Filtro.
Selecione uma propriedade, um operador e um valor.
A tabela mostra os dados que correspondem ao filtro.
Ver exemplos de solicitações de bloqueio
O painel Amostras de solicitações de bloqueio mostra detalhes sobre o exemplo de bloqueio solicitações de transações concorrentes.
Para acessar um exemplo de informações de solicitação de bloqueio referente a uma chave de início de intervalo de linhas, clique em o link relacionado na tabela.
A tabela mostra as seguintes colunas de informações:
- Nome da coluna de amostra: a coluna que encontrou o bloqueio conflito no intervalo de chave de linha.
- Modo de bloqueio: o modo de bloqueio solicitado.
- Visualizar transações: um link para a página Insights sobre transações, que mostra as transações que podem estar competindo por bloqueios.
Identifique transações concorrentes usando insights de transações
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 visualizar a latência das transações, siga estas etapas:
Clique em Insights da transação no painel de navegação à esquerda.
No seletor Bancos de dados na parte de cima, selecione o banco de dados que mostra o tempo de espera de bloqueio mais alto.
Como alternativa, no painel "Bloquear insights", clique em Ver transações para filtrar transações que leem ou gravam em um endereço coluna de amostra.
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 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.
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 "Detalhes da transação".
- Tag da transação: a tag da transação opcional para a transação. Dados estatísticos de várias transações com a mesma tag.
string é agrupada em uma única linha, com o rótulo
TRANSACTION_TAG
correspondente ao string da tag. - Tabelas afetadas: as tabelas afetadas pela transação.
- Leitura de tabela.coluna: as colunas lidas pela transação.
- 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 destacada.
Para filtrar os dados na tabela, faça o seguinte:
Clique ao lado de Filtrar.
Selecione uma propriedade, um operador e um valor.
A tabela mostra os dados que correspondem ao filtro.
Conferir informações detalhadas sobre uma transação
Para visualizar informações detalhadas sobre uma transação, como a que mostra o maior latência, clique no link Impressão digital na respectiva linha da tabela.
A página Detalhes da transação é exibida. Além da tabela de detalhes no topo, 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: a média de segundos necessários para executar a operação de confirmação.
- Contagem total de tentativas: o número total de tentativas de transação.
- Contagem total de cancelamentos: o número total de tentativas de transação que canceladas, incluindo aquelas que são canceladas antes de chamar o método commit.
Gráficos que representam 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.
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.