Métricas e monitorização de TTL

Esta página aborda as métricas de tempo de vida (TTL) do Spanner. Para saber mais, consulte o artigo Acerca da TTL.

Métrica

O Spanner fornece informações sobre as atividades de TTL numa tabela do sistema que pode ser lida com consultas SQL e como métricas acedidas através do Cloud Monitoring.

A tabela do sistema comunica informações de TTL por tabela para uma base de dados, enquanto o Cloud Monitoring comunica métricas ao nível da base de dados.

Use uma consulta SQL

O Spanner fornece uma tabela integrada que acompanha as informações relacionadas com o TTL. A tabela tem o nome SPANNER_SYS.ROW_DELETION_POLICIES e o seguinte esquema.

Nome da coluna Tipo Descrição
TABLE_NAME STRING O nome da tabela que contém esta política de TTL.
PROCESSED_WATERMARK TIMESTAMP Esta política foi executada em todas as linhas da tabela a partir desta hora. Algumas partições de tabelas podem ter sido processadas mais recentemente, pelo que esta data/hora representa a partição processada menos recentemente. Normalmente, este processo demora 72 horas.
UNDELETABLE_ROWS INT64 O número de linhas que não podem ser eliminadas pela política de TTL. Consulte o artigo Linhas não elimináveis para ver mais detalhes.
MIN_UNDELETABLE_TIMESTAMP TIMESTAMP A data/hora mais antiga das linhas não elimináveis observada durante o último ciclo de processamento.

As informações da política de eliminação são devolvidas por tabela para a sua base de dados.

Pode consultar estes dados com uma consulta SQL semelhante à seguinte:

SELECT TABLE_NAME, UNDELETABLE_ROWS
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE UNDELETABLE_ROWS > 0

As tabelas SPANNER_SYS só são acessíveis através de interfaces SQL; por exemplo:

  • A página Spanner Studio na Google Cloud consola
  • O comando gcloud spanner databases execute-sql
  • A API executeQuery

Outros métodos de leitura única fornecidos pelo Spanner não são compatíveis com SPANNER_SYS.

Utilize o Cloud Monitoring

O Spanner fornece as seguintes métricas para monitorizar a atividade de TTL ao nível da base de dados:

  • row_deletion_policy/deleted_rows é o número de linhas eliminadas pela política de TTL.
  • row_deletion_policy/undeletable_rows é o número de linhas que correspondem à declaração de eliminação de linhas (GoogleSQL) ou TTL INTERVAL(PostgreSQL), mas que não podem ser eliminadas. Normalmente, isto acontece porque a linha tinha demasiadas linhas secundárias, o que fez com que a ação excedesse o limite de transações do Spanner.
  • row_deletion_policy/processed_watermark_age é o tempo entre agora e a data/hora de leitura usada pelo último ciclo bem-sucedido (com ou sem linhas não elimináveis).

Estas métricas estão disponíveis através do Cloud Monitoring e da Google Cloud consola.

Monitor

Também pode monitorizar outras atividades de TTL.

Encontre a última análise bem-sucedida

Pode encontrar a hora da última captura de ecrã em que o Spanner concluiu uma análise da tabela à procura de linhas expiradas. Para o fazer como uma consulta SQL:

SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name

Em alternativa, a métrica row_deletion_policy/process_watermark_age apresenta informações semelhantes, mas é expressa como a diferença entre a hora atual e a hora da última análise. A métrica não é discriminada por tabela, mas representa o tempo de leitura mais antigo de quaisquer tabelas com TTL ativado na base de dados.

Normalmente, as linhas que correspondem a uma política de TTL são eliminadas no prazo de 72 horas após a data de validade. Pode definir um alerta no processed_watermark_age para receber uma notificação se exceder as 72 horas.

Se processed_watermark_age tiver mais de 72 horas, pode indicar que as tarefas de prioridade mais elevada estão a impedir a execução do TTL. Neste caso, recomendamos que verifique a utilização da CPU e adicione mais capacidade de computação, se necessário. Se a utilização da CPU estiver dentro do intervalo recomendado, verifique a existência de pontos críticos através do Key Visualizer.

Monitorize linhas eliminadas

Para monitorizar a atividade de TTL na sua tabela, represente graficamente a métrica row_deletion_policy/deleted_rows. Esta métrica apresenta o número de linhas eliminadas ao longo do tempo.

Se nenhum dado tiver expirado, esta métrica está vazia.

Monitorize linhas não elimináveis

Quando o TTL não consegue eliminar uma linha, o Spanner tenta novamente automaticamente. Se, após nova tentativa, não for possível processar a ação de TTL, o Spanner ignora a linha e comunica-a na métrica row_deletion_policy/undeletable_rows_count.

Pode definir um alerta no row_deletion_policy/undeletable_rows_count para receber uma notificação quando o número for diferente de zero.

Se encontrar uma contagem diferente de zero, pode criar uma consulta para discriminar a contagem por tabela:

SELECT TABLE_NAME, UNDELETABLE_ROWS, MIN_UNDELETABLE_TIMESTAMP
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE UNDELETABLE_ROWS > 0

Para procurar o conteúdo da linha não eliminável:

SELECT *
FROM $TABLE_NAME
WHERE $EXPIRE_COL >= $MIN_UNDELETABLE_TIMESTAMP

Normalmente, uma falha na eliminação de linhas deve-se a atualizações em cascata de tabelas e índices intercalados, de modo que o tamanho da transação resultante excede os limites de mutação do Spanner. Pode resolver o problema atualizando o seu esquema para adicionar políticas de TTL separadas em tabelas intercaladas.