Perché gli elementi con Time to Live scaduto non vengono eliminati dalla mia tabella Amazon DynamoDB?

Ultimo aggiornamento: 26/08/2022

Alcuni elementi con Time to Live (TTL) scaduto non vengono eliminati dalla mia tabella Amazon DynamoDB.

Risoluzione

La funzionalità TTL di DynamoDB consente di definire un timestamp per ciascun elemento al fine di determinare quando un elemento non è più necessario. Poco dopo la data e l'ora del timestamp specificato, DynamoDB elimina l'elemento dalla tabella senza consumare velocità di trasmissione effettiva di scrittura. La funzionalità TTL viene fornita senza costi aggiuntivi come mezzo per ridurre i volumi di dati archiviati mantenendo solo gli elementi che restano aggiornati per le esigenze del carico di lavoro. Quando attivi TTL in una tabella DynamoDB, devi identificare un nome di attributo specifico che il servizio cercherà per determinare se un elemento è idoneo per la scadenza. Dopo aver attivato TTL su una tabella, un processo in background di scansione per partizione valuta, in modo automatico e continuo, lo stato di scadenza degli elementi nella tabella.

Alcune delle cause più comuni per cui l'eliminazione di elementi scaduti richiede più tempo sono le seguenti:

  • L'operazione di eliminazione effettiva di un elemento scaduto può variare a seconda delle dimensioni e del livello di attività della tabella. Poiché TTL è un processo in background, la natura della capacità utilizzata per la scadenza e l'eliminazione degli elementi utilizzando TTL è variabile.
  • Il processo TTL in genere elimina gli elementi scaduti entro 48 ore dalla scadenza. Tuttavia, questa sequenza temporale non è uno SLA. Le eliminazioni TTL vengono eseguite con la massima attenzione e in alcuni casi l'eliminazione potrebbe richiedere più tempo. Durante l'eliminazione di oggetti mediante TTL, DynamoDB utilizza la capacità backend della tabella per eliminare gli oggetti invece di utilizzare la capacità assegnata. Il processo di eliminazione potrebbe richiedere più tempo se esiste un numero elevato di richieste di eliminazione e una capacità di backend insufficiente per eliminare continuamente tali elementi.

Per verificare se TTL funziona correttamente, attieniti alla seguente procedura:

  • Assicurati di aver attivato TTL sulla tabella e verifica che le relative impostazioni siano corrette.
    • L'elemento deve contenere l'attributo specificato al momento dell'attivazione di TTL sulla tabella.
    • Il valore dell'attributo TTL deve avere il tipo di dati Number.
    • Il valore dell'attributo TTL deve essere un timestamp in formato Unix epoch time in secondi.
    • Il valore dell'attributo TTL deve essere un datetimestamp con una scadenza non superiore a cinque anni nel passato.
  • I processi TTL vengono eseguiti sulla tabella solo quando la capacità di riserva è sufficiente, in modo che questi processi non interferiscano con le operazioni della tabella. Se la tabella o le partizioni della tabella utilizzano la maggior parte della capacità allocata, i processi TTL potrebbero non essere eseguiti a causa di una capacità di riserva insufficiente.

Gli elementi scaduti, ma non ancora eliminati da TTL, vengono comunque visualizzati in letture, query e scansioni. Se non desideri inserire elementi scaduti nel set di risultati, devi filtrarli. A tale scopo, utilizza un'espressione di filtro che restituisce solo gli elementi in cui il valore di scadenza Time to Live è maggiore dell'ora corrente in formato epoch. Per ulteriori informazioni, consulta Espressioni di filtro per la scansione.


Questo articolo è stato utile?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?