Metriche e monitoraggio TTL

Questa pagina illustra le metriche di durata (TTL) di Spanner. Per saperne di più, consulta la sezione Informazioni sul TTL.

Metriche

Spanner fornisce informazioni sulle attività TTL in un sistema che può essere letta con query SQL e come metriche accessibili tramite Cloud Monitoring.

La tabella di sistema riporta le informazioni sul TTL per tabella per un database, Cloud Monitoring genera report sulle metriche a livello di database.

Utilizza una query SQL

Spanner fornisce una tabella integrata che monitora le informazioni relative a TTL. La tabella è denominata SPANNER_SYS.ROW_DELETION_POLICIES e ha la seguendo lo schema.

Nome colonna Tipo Descrizione
TABLE_NAME STRING Il nome della tabella contenente questo criterio TTL.
PROCESSED_WATERMARK TIMESTAMP Questo criterio è stato eseguito su tutte le righe della tabella al momento. Alcune partizioni della tabella potrebbero essere state elaborate di recente, pertanto questo timestamp rappresenta la partizione elaborata più di recente. In genere, questo avviene entro 72 ore.
UNDELETABLE_ROWS INT64 Il numero di righe che non possono essere eliminate dal criterio TTL. Per ulteriori dettagli, consulta la sezione Righe non eliminabili.
MIN_UNDELETABLE_TIMESTAMP TIMESTAMP Il timestamp più antico per le righe non eliminabili osservato durante l'ultimo ciclo di elaborazione.

Le informazioni sui criteri di eliminazione vengono restituite per tabella per il database.

Puoi eseguire query su questi dati con una query SQL simile alla seguente:

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

Le tabelle SPANNER_SYS sono accessibili solo tramite le interfacce SQL. Ad esempio:

  • La pagina Spanner Studio nella console Google Cloud
  • Il comando gcloud spanner databases execute-sql
  • L'API executeQuery

Gli altri metodi di lettura singoli forniti da Spanner non supportano SPANNER_SYS.

Usa Cloud Monitoring

Spanner fornisce le seguenti metriche per monitorare l'attività TTL durante a livello di database:

  • row_deletion_policy/deleted_rows è il numero di righe eliminate dal criterio TTL.
  • row_deletion_policy/undeletable_rows è il numero di righe che corrispondono eliminazione di righe (GoogleSQL) o TTL INTERVAL(PostgreSQL) ma non può essere eliminata. In genere questo accade perché la riga aveva molte righe figlio, causando il superamento della capacità limite di transazioni.
  • row_deletion_policy/processed_watermark_age è l'intervallo di tempo che intercorre tra oggi e le timestamp di lettura utilizzato dall'ultimo ciclo riuscito (con o senza non eliminabili righe).

Queste metriche sono disponibili tramite Cloud Monitoring e la console Google Cloud.

Monitoraggio

Puoi anche monitorare altre attività TTL.

Trovare l'ultima scansione riuscita

Puoi trovare l'ora dell'ultimo snapshot in cui Spanner ha completato una scansione della tabella alla ricerca di righe scadute. Per farlo come query SQL:

SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name

In alternativa, la metrica row_deletion_policy/process_watermark_age mostra informazioni simili, ma è espressa come differenza tra l'ora corrente e l'ora dell'ultima scansione. La metrica non è suddivisa per tabella, ma rappresenta la data e l'ora della scansione meno recenti di tutte le tabelle con TTL abilitato nel database.

Le righe che corrispondono a un criterio TTL vengono in genere eliminate entro 72 ore dal relativo data di scadenza. Puoi impostare un avviso su processed_watermark_age in modo da ricevere una notifica se supera le 72 ore.

Se processed_watermark_age è precedente a 72 ore, è possibile che le attività con priorità più elevata impediscano l'esecuzione del TTL. In questo caso, di controllare l'utilizzo della CPU aggiungendo ulteriore capacità di calcolo se necessario. Se l'utilizzo della CPU è compreso nell'intervallo consigliato, verifica l'eventuale presenza di hotspot usando Key Visualizer.

Monitorare le righe eliminate

Per monitorare l'attività TTL nella tabella, crea un grafico della metrica row_deletion_policy/deleted_rows. Questa metrica mostra il numero di righe eliminate nel tempo.

Se nessun dato è scaduto, questa metrica è vuota.

Monitora le righe non eliminabili

Quando il TTL non è in grado di eliminare una riga, Spanner riprova automaticamente. Se, al nuovo tentativo, l'azione TTL non può essere elaborata, Spanner salta la riga e la segnala nella metrica row_deletion_policy/undeletable_rows_count.

Puoi impostare un avviso nella row_deletion_policy/undeletable_rows_count per ricevere una notifica relativa a un valore diverso da zero conteggio.

Se trovi un conteggio diverso da zero, puoi creare una query per scomporre conteggio per tabella:

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

Per cercare i contenuti della riga non eliminabile:

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

In genere, un errore di eliminazione di righe è dovuto ad aggiornamenti a cascata di tabelle e indici interlacciati in modo che le dimensioni della transazione risultante superino i limiti di mutazione di Spanner. Puoi risolvere il problema aggiornando lo schema per aggiungere criteri TTL separati per le tabelle interlacciate.