La durata (TTL) ti consente di impostare dei criteri per eliminare periodicamente i dati da: 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, un potenziale aumento delle prestazioni delle query.
- Aiuta a rispettare le normative o le linee guida del settore che limitano il di conservazione di alcuni tipi di dati.
Il TTL è ideale per le normali attività di pulizia. Viene eseguito continuamente in background, eliminando periodicamente i dati idonei in batch. I dati sono generalmente vengono eliminati entro 72 ore dalla data di scadenza. Il TTL non corrisponde immediatamente invalida i dati o li nascondi dalle query quando diventano idonei per l'eliminazione. Inoltre, il TTL non controlla i dati mentre è inserito, quindi non ti impedisce di inserendo una riga con un timestamp scaduto.
Il TTL è progettato per ridurre al minimo l'impatto su altre attività di database. Parallelizza lavorare in modo più efficiente rispetto alle query degli utenti finali e include la logica di ripetizione per garantire la pulizia end-to-end.
Un altro processo di compattazione in background recupera spazio di archiviazione dalle righe eliminate, in genere entro sette giorni.
Come funziona il TTL?
Puoi impostare il TTL sulle tabelle Spanner definendo un'eliminazione riga nello schema del database, che consente a Spanner di eliminare periodicamente i dati non necessari. Ogni tabella può avere il proprio criterio. Solo uno Il criterio TTL può essere specificato per ogni tabella. Hai configurato il TTL in modo diverso Database di dialetti GoogleSQL e database di dialetti PostgreSQL.
TTL con GoogleSQL
Con GoogleSQL, definisci un criterio di eliminazione delle righe specificando un timestamp e un interval 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 ogni giorno la presenza di righe idonee. Parallelizza eliminazioni effettive in batch eseguiti vicino alla posizione in cui sono archiviati i dati internamente. Ogni batch viene eseguito nella propria transazione in corrispondenza di un timestamp coerente. Di conseguenza, le righe di un determinato batch, insieme a eventuali indici e elementi figlio con interleaving, e ne garantisce l'eliminazione atomica. L'eliminazione avviene però in più batch avvengono in diverse transazioni.
Poiché si tratta di un processo in background asincrono, c'è un ritardo tra l'idoneità e l'eliminazione. In genere, il ritardo è inferiore a 72 ore. Come righe potrebbero rimanere nella tabella per un massimo di tre giorni dopo che il TTL è stato scaduto; ad esempio, una tabella con un criterio di eliminazione delle righe che elimina le righe precedenti potrebbero includere righe risalenti a massimo sette giorni prima della data corrente, di righe non eliminabili.
Per istruzioni dettagliate su come creare una riga GoogleSQL criterio di eliminazione, consulta la sezione Creare un criterio TTL.
TTL con PostgreSQL
Con PostgreSQL, il proprietario di un database può utilizzare una clausola TTL INTERVAL
in
l'istruzione CREATE TABLE
o ALTER TABLE
per definire un criterio 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
l'eliminazione dei dati.
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 usare valori negativi
numeri.
La garbage collection TTL elimina le righe idonee continuamente e in background. Poiché si tratta di un processo in background asincrono, c'è un ritardo tra l'idoneità e l'eliminazione. La tabella potrebbe contenere righe idonee per il TTL ma per il quale il TTL non è stato ancora completato. In genere, il ritardo è inferiore per più di 72 ore.
Per istruzioni su come creare un criterio di eliminazione di righe PostgreSQL: consulta Creare un criterio TTL.
Backup e TTL
Ripristina un backup
Quando ripristini un database da un backup, tutti i criteri di eliminazione delle righe configurate sul database di origine vengono eliminate automaticamente. In questo modo Spanner per impedire l'eliminazione potenziale dei dati scaduti non appena il backup è stato ripristinato. Dovrai quindi riconfigurare il TTL manualmente.
Coerenza dei dati
Una backup è un'istantanea coerente dei tuoi dati
un particolare momento (version_time
). Il backup può contenere righe che
potrebbe essere idoneo per l'eliminazione TTL, ma per il quale il TTL non è ancora stato completato.
Analogamente, i job di esportazione Dataflow leggono l'intera tabella
con timestamp fisso.
Controllo
Il TTL supporta il controllo delle relative eliminazioni tramite i flussi di modifiche. I record di dati dei flussi di modifiche che tengono traccia delle modifiche al TTL in un database hanno
Campo transaction_tag
impostato su RowDeletionPolicy
e
Campo is_system_transaction
impostato su true
. I lettori delle modifiche in tempo reale vengono quindi
in grado di filtrare tutti i record TTL o tutti i record tranne il TTL
a seconda del caso d'uso. Guarda un esempio di utilizzo di Beam per filtrare in base a:
tag di transazione.