Metriche e monitoraggio TTL

Questa pagina illustra le metriche relative alla durata (TTL) di Spanner. Per scoprire di più, consulta Informazioni sul TTL.

Metriche

Spanner fornisce informazioni sulle attività TTL in una tabella di sistema che possono essere lette con query SQL e come metriche a cui si accede tramite Cloud Monitoring.

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

Utilizzare una query SQL

Spanner fornisce una tabella integrata che monitora le informazioni relative al TTL. La tabella è denominata SPANNER_SYS.ROW_DELETION_POLICIES e ha il seguente schema.

Nome colonna Tipo Descrizione
TABLE_NAME STRING Il nome della tabella che contiene questa norma TTL.
PROCESSED_WATERMARK TIMESTAMP Questo criterio è stato eseguito su tutte le righe della tabella a partire da questo momento. Alcune partizioni della tabella potrebbero essere state elaborate di recente, pertanto questo timestamp rappresenta la partizione elaborata più di recente. In genere, 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 sulle norme 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 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 singola forniti da Spanner non supportanoSPANNER_SYS.

Usa Cloud Monitoring

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

  • row_deletion_policy/deleted_rows è il numero di righe eliminate dalla policy TTL.
  • row_deletion_policy/undeletable_rows è il numero di righe che corrispondono all'istruzione di eliminazione riga (GoogleSQL) o TTL INTERVAL(PostgreSQL), ma che non possono essere eliminate. In genere, questo accade perché la riga conteneva troppe righe secondarie, causando il superamento del limite di transazioni di Spanner.
  • row_deletion_policy/processed_watermark_age è il tempo che intercorre tra il momento corrente e il timestamp di lettura utilizzato dall'ultimo ciclo riuscito (con o senza righe non eliminabili).

Queste metriche sono disponibili tramite Cloud Monitoring e la console di 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 più antica di qualsiasi tabella con TTL abilitato nel database.

In genere, le righe che corrispondono a un criterio TTL vengono eliminate entro 72 ore dalla 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, potrebbe indicare che le attività con priorità più elevata stanno impedendo l'esecuzione del TTL. In questo caso, consigliamo di controllare l'utilizzo della CPU e di aggiungere altra capacità di calcolo, se necessario. Se l'utilizzo della CPU rientra nell'intervallo consigliato, controlla la presenza di hotspot utilizzando 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.

Monitorare le righe non eliminabili

Quando 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 su row_deletion_policy/undeletable_rows_count per ricevere una notifica in caso di un conteggio diverso da zero.

Se trovi un conteggio diverso da zero, puoi creare una query per suddividere il 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.