La durata (TTL) consente di impostare criteri per eliminare periodicamente i dati dalle tabelle Spanner. Rimozione dei dati non necessari:
- Riduce i costi di archiviazione e backup.
- Riduce il numero di righe che il database deve scansionare per alcune query, aumentando potenzialmente le prestazioni delle query.
- Aiuta a rispettare le normative o le linee guida del settore che limitano il periodo di conservazione di determinati tipi di dati.
Il TTL è ideale per le attività di pulizia regolari. Viene eseguito continuamente in background, eliminando periodicamente i dati idonei in batch. In genere i dati vengono eliminati entro 72 ore dalla data di scadenza. Ogni eliminazione richiede una replica della chiave primaria nelle repliche del database, il che comporta costi di replica. Per saperne di più, consulta Prezzi della replica dei dati. Il TTL non invalida immediatamente i dati né li nasconde dalle query quando diventano idonei all'eliminazione. Inoltre, il TTL non controlla i dati durante l'inserimento, quindi non ti impedisce di inserire una riga con un timestamp scaduto.
TTL è progettato per ridurre al minimo l'impatto su altri workload del database. La procedura di pulizia TTL viene eseguita in background con priorità bassa del sistema. Distribuisce il lavoro nel tempo e le risorse delle istanze disponibili in modo più efficiente rispetto alle query degli utenti finali e include una logica di ripetizione per garantire la pulizia end-to-end con un sovraccarico di elaborazione minimo.
Un altro processo di compattazione in background recupera lo spazio di archiviazione dalle righe eliminate, in genere entro sette giorni.
Come funziona il TTL?
Puoi impostare il TTL nelle tabelle Spanner definendo un criterio di eliminazione delle righe nello schema del database. Questa policy consente a Spanner di eliminare periodicamente i dati non necessari. Le policy TTL hanno le seguenti caratteristiche:
- Ogni tabella può avere i propri criteri.
- Puoi specificare un solo criterio TTL per tabella.
- Configuri il TTL in modo diverso per i database con dialetto GoogleSQL e per i database con dialetto PostgreSQL.
- La policy TTL non elimina le righe con il timestamp impostato su
NULL
. - I dati inseriti con timestamp scaduti vengono puliti quando vengono rilevati nel ciclo di eliminazione TTL successivo.
TTL con GoogleSQL
Utilizzando GoogleSQL, definisci un criterio di eliminazione delle righe specificando un timestamp e un intervallo per determinare quando una riga è idonea per l'eliminazione, ad esempio la data dell'ultimo aggiornamento più 30 giorni.
Un processo di sistema in background controlla quotidianamente le righe idonee. Parallelizza le eliminazioni effettive in batch eseguiti in prossimità della posizione in cui i dati vengono archiviati internamente. Ogni batch viene eseguito nella propria transazione con un timestamp coerente. Pertanto, le righe di un determinato batch, insieme a eventuali indici e figli con interfoliazione, vengono eliminate in modo atomico. Tuttavia, le eliminazioni tra batch avvengono in transazioni diverse.
Poiché si tratta di un processo in background asincrono, esiste un ritardo tra l'idoneità e l'eliminazione. In genere, il ritardo è inferiore a 72 ore. Di conseguenza, le righe potrebbero rimanere nella tabella fino a tre giorni dopo la scadenza del TTL. Ad esempio, una tabella con una norma di eliminazione delle righe che elimina le righe più vecchie di quattro giorni potrebbe includere righe fino a sette giorni di età, nonché righe più vecchie e non eliminabili.
Per istruzioni passo passo su come creare un criterio di eliminazione delle righe GoogleSQL, consulta Creare un criterio TTL.
TTL con PostgreSQL
Utilizzando PostgreSQL, un proprietario del database può utilizzare una clausola TTL INTERVAL
nell'istruzione CREATE TABLE
o ALTER TABLE
per definire una norma di eliminazione delle righe.
Per impostare un criterio di eliminazione delle righe in una tabella PostgreSQL, la tabella deve
avere una colonna con il tipo di dati TIMESTAMPTZ
. La clausola TTL INTERVAL
utilizza
questa colonna per impostare una specifica dell'intervallo per quando una riga è idonea per
l'eliminazione.
La clausola deve restituire un numero intero di giorni. Ad esempio, '3
DAYS'
è consentito, così come '4 DAYS 2 MINUTES - 2 MINUTES'
, ma '4 DAYS 3
MINUTES'
non è consentito e viene restituito un errore. Non puoi utilizzare numeri negativi.
La garbage collection TTL elimina le righe idonee in modo continuo e in background. Poiché si tratta di un processo in background asincrono, esiste un ritardo tra l'idoneità e l'eliminazione. La tabella potrebbe contenere righe idonee per l'eliminazione TTL, ma per le quali il TTL non è ancora stato completato. In genere, il ritardo è inferiore a 72 ore.
Per istruzioni su come creare una policy di eliminazione delle righe PostgreSQL, vedi Crea una policy TTL.
Backup e TTL
Ripristina un backup
Quando ripristini un database da un backup, tutte le norme di eliminazione delle righe configurate nel database di origine vengono eliminate automaticamente. In questo modo Spanner non elimina potenzialmente i dati scaduti non appena il backup è stato ripristinato. Pertanto, dovrai riconfigurare manualmente il TTL.
Coerenza dei dati
Un backup è un'istantanea coerente dei tuoi dati in un
momento specifico (version_time
). Il backup può contenere righe che
potrebbero essere idonee all'eliminazione TTL, ma per le quali il TTL non è ancora stato completato.
Allo stesso modo, i job di esportazione Dataflow leggono l'intera tabella in un timestamp fisso.
Controllo
Il TTL supporta il controllo delle eliminazioni tramite
flussi di modifiche.
I record di dati degli stream di modifiche che monitorano le modifiche TTL a un database hanno il
campo transaction_tag
impostato su RowDeletionPolicy
e il
campo is_system_transaction
impostato su true
. I lettori di flussi di modifiche possono quindi
filtrare tutti i record TTL o tutti i record tranne quelli TTL,
a seconda del caso d'uso. Visualizza un esempio di utilizzo di Beam per filtrare in base ai
tag delle transazioni.
Passaggi successivi
- Scopri come gestire la conservazione dei dati con il TTL.
- Scopri di più su metriche e monitoraggio TTL.