Warum werden die Elemente mit abgelaufener Gültigkeitsdauer nicht aus meiner Amazon-DynamoDB-Tabelle gelöscht?
Einige Elemente mit abgelaufener Gültigkeitsdauer (TTL) werden nicht aus meiner Amazon-DynamoDB-Tabelle gelöscht.
Behebung
Mit der TTL-Funktion von DynamoDB können Sie je Element einen Zeitstempel definieren, um festzulegen, wann Sie es nicht mehr benötigen. Kurz nach Verstreichen von Datum und Uhrzeit des angegebenen Zeitstempels löscht DynamoDB das Element aus Ihrer Tabelle. Dies verbraucht keinen Schreibdurchsatz. TTL ermöglicht es Ihnen, nur die Elemente beizubehalten, die für die Anforderungen Ihres Workloads aktuell sind, und so die Menge der gespeicherten Daten zu reduzieren. Für TTL fallen keine zusätzlichen Kosten an. Wenn Sie TTL für eine DynamoDB-Tabelle aktivieren, geben Sie einen Attributnamen an, nach dem der Service suchen soll, um festzustellen, ob ein Element abläuft. Nachdem Sie TTL für eine Tabelle aktiviert haben, prüft für jede Partition ein Scanner-Hintergrundprozess automatisch und kontinuierlich den Ablaufstatus der Elemente in der Tabelle.
Folgendes sind häufige Gründe dafür, dass das Löschen abgelaufener Elemente länger dauern kann als erwartet:
- Der tatsächliche Löschvorgang eines abgelaufenen Elements kann je nach Größe und Aktivitätsgrad Ihrer Tabelle variieren. Da TTL ein Hintergrundprozess ist, kann die Kapazität variieren, die er für Ablauf und Löschung von Elementen verwendet.
- TTL löscht abgelaufene Elemente in der Regel innerhalb weniger Tage. Je nach Größe und Aktivitätsgrad einer Tabelle kann die tatsächliche Dauer des Löschvorgangs eines abgelaufenen Elements variieren. TTL löscht Elemente so bald wie möglich, und das Löschen kann in einigen Fällen länger dauern. Für das Löschen von Objekten verwendet DynamoDB anstelle der bereitgestellten Kapazität die Backend-Kapazität der Tabelle. Der Vorgang kann mehr Zeit in Anspruch nehmen, wenn es viele Löschanfragen gibt und nicht genügend Backend-Kapazität vorhanden ist, um diese Elemente kontinuierlich zu löschen.
Überprüfen Sie die folgenden Voraussetzungen, um zu überprüfen, ob TTL ordnungsgemäß funktioniert:
-
Vergewissern Sie sich, dass Sie TTL für die Tabelle aktiviert haben und die entsprechenden 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 in Sekunden im Unix-Zeitformat sein. Weitere Informationen finden Sie unter Unixzeit auf Wikipedia.
-
Der TTL-Attributwert muss ein datetimestamp sein, dessen Ablauf 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 die Tabellenpartitionen den Großteil der zugewiesenen Kapazität beanspruchen, werden TTL-Prozesse möglicherweise nicht ausgeführt.
Abgelaufene Elemente, die noch nicht gelöscht wurden, werden weiterhin in Lesevorgängen, Abfragen und Scans angezeigt. Wenn Sie keine abgelaufenen Elemente im Ergebnissatz haben möchten, müssen Sie sie herausfiltern. Verwenden Sie einen Filterausdruck, der nur Elemente zurückgibt, deren TTL-Ablaufwert größer als die aktuelle Zeit im Epochenformat ist. Weitere Informationen finden Sie unter Filterausdrücke für Scan.
Verwandte Informationen
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Monaten