不會從我的 Amazon DynamoDB 表格中刪除部分過期存活時間 (TTL) 的項目。
解決方法
DynamoDB TTL 功能可讓您定義每個項目的時間戳記,以確定您何時不再需要某個項目。在指定時間戳記的日期和時間之後不久,DynamoDB 就會從您的表格刪除項目。這樣不會消耗任何寫入輸送量。TTL 可讓您僅保留符合目前的工作負載需求,藉此減少儲存的資料量。TTL 不會產生任何額外成本。您在 DynamoDB 表格上啟用 TTL 時,請為要尋找的服務識別屬性名稱,以判斷項目是否符合到期資格。在表格上啟動 TTL 之後,每個分區掃描器的背景程序會自動持續評估表格中項目的到期狀態。
刪除過期項目可能需要比預期更長的時間,下列是一些常見原因:
- 取決於表格的大小和活動層級,過期項目的實際刪除作業可能會有所差異。因為 TTL 為背景處理程序,因此它用來終止和刪除項目的容量可能會有所差異。
- TTL 通常會在幾天內刪除過期的項目。取決於表格的大小和活動層級,過期項目的實際刪除作業可能會有所差異。TTL 會以最佳方式刪除項目,而在某些情況下進行刪除可能會需要更長的時間。在刪除物件期間,DynamoDB 會使用表格的後端容量來刪除物件,而不是使用佈建的容量來刪除物件。如果有許多刪除請求,但後端容量不足以持續刪除這些項目,則該程序可能會需要更長的時間。
若要檢查 TTL 是否正常運作,請驗證下列條件:
-
請確定您已在表格上啟動 TTL,並且相關設定正確無誤:
-
項目必須包含您在表格上啟動 TTL 時指定的屬性。
-
TTL 屬性的值必須具有資料類型的數字。
-
TTL 屬性的值必須是 Unix epoch 時間格式的時間戳記 (以秒 為單位)。如需詳細資訊,請參閱維基百科上的 Unix time。
-
TTL 屬性值必須是過去不超過五年到期的 datetimestamp。
-
TTL 處理程序僅限有足夠的備用容量時才會在表格上執行,以便這些處理程序不會干擾表格作業。如果表格或表格分區會使用大部分的配置容量,則 TTL 處理程序可能無法執行。
已過期但尚未刪除的項目仍會出現在讀取、查詢和掃描中。如果您不想要在結果集中有過期的項目,則您必須將其篩選掉。使用篩選器表示式,該表示式僅會傳回「存活時間」到期值大於目前時間 (以 epoch 格式顯示) 的項目。如需詳細資訊,請參閱篩選表示式以供掃描。
相關資訊
使用 DynamoDB 存活時間 (TTL) 將項目終止