数据生命周期(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 更新写入操作为禁止状态。




