Warum werden Elemente mit abgelaufener Time to Live nicht aus meiner Amazon-DynamoDB-Tabelle gelöscht?

Letzte Aktualisierung: 26.08.2022

Einige Elemente mit abgelaufener Time to Live (TTL) wurden noch nicht aus meiner Amazon-DynamoDB-Tabelle gelöscht.

Auflösung

Mit der DynamoDB-TTL-Funktion können Sie einen Zeitstempel pro Element definieren, um zu bestimmen, wann ein Element nicht mehr benötigt wird. Kurz nach dem Datum und der Uhrzeit des angegebenen Zeitstempels löscht DynamoDB das Element aus Ihrer Tabelle, ohne Schreibdurchsatz zu verbrauchen. TTL wird ohne zusätzliche Kosten bereitgestellt, um das gespeicherte Datenvolumen zu reduzieren, indem nur die Elemente beibehalten werden, die für die Anforderungen Ihres Workloads aktuell bleiben. Wenn Sie TTL für eine DynamoDB-Tabelle aktivieren, müssen Sie einen bestimmten Attributnamen angeben, nach dem der Service sucht, um zu ermitteln, ob ein Element für den Ablauf in Frage kommt. Nachdem Sie TTL für eine Tabelle aktiviert haben, wertet ein Pro-Partitions-Scanner-Hintergrundprozess automatisch und kontinuierlich den Ablaufstatus der Elemente in der Tabelle aus.

Einige der häufigsten Gründe dafür, dass das Löschen abgelaufener Elemente länger dauert, sind folgende:

  • Der tatsächliche Löschvorgang eines abgelaufenen Elements kann je nach Größe und Aktivitätsstufe Ihrer Tabelle variieren. Da TTL ein Hintergrundprozess ist, ist die Art der Kapazität, die zum Ablaufen und Löschen von Elementen mit TTL verwendet wird, variabel.
  • Der TTL-Prozess löscht abgelaufene Elemente in der Regel innerhalb von 48 Stunden nach Ablauf. Diese Zeitleiste ist jedoch kein SLA. TTL-Löschungen werden nach bestem Bemühen durchgeführt, und das Löschen kann in einigen Fällen länger dauern. Beim Löschen von Objekten mit TTL verwendet DynamoDB die Backend-Kapazität der Tabelle, um die Objekte zu löschen, anstatt die bereitgestellte Kapazität zu verwenden. Der Löschvorgang kann länger dauern, wenn eine große Anzahl von Löschanforderungen vorliegt und nicht genügend Backend-Kapazität vorhanden ist, um diese Elemente kontinuierlich zu löschen.

Gehen Sie wie folgt vor, um zu überprüfen, ob TTL ordnungsgemäß funktioniert:

  • Stellen Sie sicher, dass Sie TTL in der Tabelle aktiviert haben und die zugehörigen Einstellungen korrekt sind.
    • Das Element muss das Attribut enthalten, das Sie bei der Aktivierung von TTL für die Tabelle angegeben haben.
    • Der Wert des TTL-Attributs muss den Datentyp Zahl haben.
    • Der Wert des TTL-Attributs muss ein Zeitstempel im Unix-Epochenzeitformat in Sekunden sein.
    • Der TTL-Attributwert muss ein datetimestamp dessen Ablaufdatum nicht länger als fünf Jahre zurückliegt.
  • Die TTL-Prozesse werden nur dann auf der Tabelle ausgeführt, wenn genügend freie Kapazität vorhanden ist, sodass diese Prozesse die Tabellenoperationen nicht beeinträchtigen. Wenn die Tabelle oder Tabellenpartitionen den größten Teil der zugewiesenen Kapazität verwenden, werden TTL-Prozesse aufgrund unzureichender freier Kapazität möglicherweise nicht ausgeführt.

Elemente, die abgelaufen sind, aber noch nicht von TTL gelöscht wurden, werden weiterhin in Lesevorgängen, Abfragen und Scans angezeigt. Wenn Sie nicht möchten, dass abgelaufene Elemente in der Ergebnismenge enthalten sind, müssen Sie diese herausfiltern. Verwenden Sie dazu einen Filterausdruck, der nur Elemente zurückgibt, bei denen der Time-to-Live-Ablaufwert größer als die aktuelle Zeit im Epochenformat ist. Weitere Informationen finden Sie unter Filterausdrücke für den Scan.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?