為何沒有從我的 Amazon DynamoDB 資料表中刪除已超過存留時間的項目?

上次更新日期:2022 年 8 月 26 日

某些已超過存留時間的項目尚未從我的 Amazon DynamoDB 資料表中刪除。

解決方案

DynamoDB 存留時間功能可讓您定義每個項目的時間戳記,以確定何時不再需要某個項目。在指定時間戳記的日期和時間之後不久,DynamoDB 就會從資料表中刪除該項目,而不會耗用任何寫入輸送量。使用存留時間無需額外成本,可藉由僅保留符合工作負載需求的最新項目,藉此減少儲存的資料量。當您在 DynamoDB 資料表上啟用存留時間時,您必須識別服務在判斷項目是否符合到期資格時尋找的特定屬性名稱。在資料表上啟動存留時間後,每個分區掃描器的背景程序會自動並持續評估資料表中項目的到期狀態。

刪除過期項目需要更長時間的一些常見原因如下:

  • 過期項目的實際刪除操作可能會根據資料表的大小和活動等級而有所不同。由於存留時間是背景處理程序,因此使用存留時間讓項目過期和刪除項目時所使用的容量本質是可變的。
  • 存留時間程序通常會在到期後 48 小時內刪除過期的項目。但是,此時間表並非服務水準協議 (SLA)。存留時間刪除是在盡力而為的基礎上完成的,在某些情況下刪除可能需要更長的時間。在使用存留時間刪除物件期間,DynamoDB 會使用資料表的後端容量刪除物件,而不是使用佈建的容量。如果有大量刪除請求,但後端容量不足以持續刪除這些項目,則刪除程序可能會花費更長的時間。

若要檢查存留時間是否正常運作,請執行下列操作:

  • 請確定您已在資料表上啟動存留時間,且相關設定正確無誤。
    • 項目必須包含您在資料表上啟動存留時間時指定的屬性。
    • 存留時間屬性的值必須具有資料類型 Number(數字)。
    • 存留時間屬性的值必須是 Unix 紀元時間格式 為單位的時間戳記。
    • 存留時間屬性值必須是 日期時間戳記,其過期時間不超過過去五年。
  • 存留時間程序只有在有足夠備用容量時才會在資料表上執行,以便這些程序不會干擾資料表操作。如果資料表或資料表分區使用大部分已分配的容量,存留時間程序可能會因為備用容量不足而無法執行。

已過期但尚未被存留時間刪除的項目仍會出現在讀取、查詢和掃描中。如果您不希望在結果集中出現過期的項目,則必須將其篩選掉。若要這麼做,請使用篩選條件表達式,只傳回存留時間過期值大於目前時間 (以 epoch 格式表示) 的項目。如需詳細資訊,請參閱用於掃描的篩選條件表達式


此文章是否有幫助?


您是否需要帳單或技術支援?