資料生命週期(Time To Live,簡稱 TTL)是多元索引的一個屬性,用於控制資料的儲存時間。多元索引會自動清理超過儲存時間的資料,減少儲存空間佔用,降低儲存成本。
注意事項
使用生命週期管理功能,必須禁用資料表的 UpdateRow 更新寫入操作。 原因如下:資料表 TTL 在屬性列層級生效,而多元索引 TTL 在整行層級生效。如果存在 UpdateRow 寫入操作,清理資料表時可能出現部分欄位值已刪除、但多元索引中整行資料未刪除的情況,導致兩者資料不一致。如果業務需要更新資料,改用 PutRow 覆蓋寫入操作。
-
使用生命週期管理功能,必須禁用資料表的 UpdateRow 更新寫入操作,避免一些語義上的問題:
由於資料表 TTL 是屬性列層級生效的,而多元索引 TTL 是整行生效的,如果存在 UpdateRow 寫入操作,當系統清理資料表中資料時,資料表中部分欄位值已刪除而部分欄位值未刪除,但是多元索引中整行資料均未刪除,則會造成資料表和多元索引中的資料不一致。
如果業務有 UpdateRow 更新寫入操作,請查看是否能改為 PutRow 覆蓋寫入操作。
-
多元索引的 TTL 取值範圍為 -1 或 int32 的正整數(單位為秒),其中 -1 表示永久儲存,int32 最大值換算為年大約為 68 年。
-
多元索引的 TTL 和資料表的 TTL 是獨立的,多元索引的 TTL 值必須小於或等於資料表的 TTL 值。需要同時調小多元索引 TTL 和資料表 TTL 時,請先調整多元索引 TTL,再調整資料表 TTL。
-
多元索引每天會自動清理已到期的資料,到期資料的清理粒度為"天"。在下一次清理周期到來前,仍可查詢到已到期但尚未被清理的資料。
-
更新資料表和多元索引的 TTL 後,系統會在下一次清理周期自動清理存量到期資料。
使用方式
通過控制台或SDK設定多元索引生命週期。使用多元索引生命週期,必須始終保持資料表 UpdateRow 更新寫入操作為禁止狀態。