Panoramica della durata (TTL)

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 viene eliminato 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 con la 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

Ripristino di 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 in modalità flusso 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.