為什麼沒有從我的 Amazon DynamoDB 表格中刪除過期存活時間的項目?

1 分的閱讀內容
0

不會從我的 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) 將項目終止

AWS 官方
AWS 官方已更新 7 個月前