数据生命周期
数据生命周期(TTL)是衡量云器Lakehouse中表和表分区从最后一次更新时间算起的时间长度。在指定的时间周期内,如果数据没有发生变动,系统将自动回收这些数据。生命周期的单位是天,且取值为整数类型。
数据生命周期的工作原理
数据生命周期到期的回收依赖于数据的最后修改时间(last_modified_time)。对于非分区表您可以通过desc extended
命令查看last_modified_time,对于分区表您可以通过show partitions extended table_name查看对应具体分区的last_modified_time变化时间。当发生DDL(数据定义语言)和DML(数据操纵语言)操作时,last_modified_time会发生变化。
需要注意的是,到期的数据并不会立即被回收。您仍然可以查询这些数据,直到后台进程执行删除操作。通常,后台进程会在24小时内删除这些数据。此外,被回收的表仍然遵守数据保留周期,您仍可以使用时间旅行功能进行查询。若需要恢复已删除的对象,可以使用undrop table命令。
设置数据生命周期
生命周期单位为天,取值为正整数。设置为'-1'代表不开启生命周期,即数据将被永久保留。您可以在创建表时指定生命周期,也可以在表创建后进行修改。
具体SQL操作方式
创建表时设置生命周期
修改现有表的生命周期
注意事项
- 生命周期回收是每天不定时启动的12小时轮训一次,会扫描全量分区。只有当last_modified_time超过生命周期指定的时间时,数据才会被回收。
- 生命周期回收主要针对表或分区,每天根据服务的繁忙程度进行,不能确保到期后立即被回收。
- 生命周期到期时,默认行为是不删除表结构,只清空数据。如果您希望删除表结构,请在设置生命周期时添加参数
ALTER TABLE tname SET PROPERTIES ('data_lifecycle_delete_meta'='true')
。 - 修改生命周期时,例如当您将生命周期策略从15天更改为30天时,新策略会立即生效。但是由于生命周期回收任务每天不定时启动,通常每12小时轮询一次。在极少数情况下如果在策略变更时。回收任务恰好启动,读到了旧的策略,可能会按照旧策略(15天)回收部分数据。该现象属系统设计的正常机制,不会影响未到期数据安全
联系我们