问下Hologres这个 ttl 是 插入表的某几条数据达到ttl时间后删除, 还是 ttl个时间后直接把整张表数据删除?
那这个具体删除的时间就只能随缘了是吗 ?
按数据写入/更新的数据算,不是整表.根据数据的compaction来决定的。一般不建议用ttl 控制数据删除时间。如果是分区表,就用动态分区,如果是非分区表,写个定时任务删除也行,此回答整理自钉群“实时数仓Hologres交流群”
Hologres的TTL功能并不是精确地在某个时间点删除数据,而是当表中的数据超过设置的TTL时间后,系统会在某一个时间自动删除这些数据。这意味着,不能精确地控制数据的删除时间,因此业务逻辑不应强依赖TTL,以免带来不必要的损失。从V1.3.24版本开始,Hologres允许设置的TTL的最小值为一天(即86400秒)。如果不设置TTL,默认值会是100年。
关于具体的删除过程,当DELETE操作执行时,老数据会被做标记,新数据会Flush成新的小文件。随后,后台会将这些小文件进行Compaction,该过程中就会将老数据清理掉,并合并新数据。
因此,在使用TTL功能时,需要仔细考虑业务需求和数据安全性,以确保数据不会被错误或过早地删除。
在Hologres中,TTL(Time To Live)是一种设置表数据过期时间的方式。当表中的某些数据达到设置的TTL时间后,这些数据并不会被直接删除,而是会被标记为待删除状态。随后,在新数据的写入和刷新过程中,这些被标记的数据会被清理掉,并合并到新的小文件中。后台会将这些小文件进行Compaction操作,在这个过程中,老数据会被清理掉,新数据则会被保留并合并。
需要特别注意的是,TTL并不是一个精确的时间点,而是一个时间段。也就是说,当数据超过设置的TTL时间后,系统会在某一个时间自动删除这些数据。这个“某一个时间”并不是固定的,因此不能强依赖TTL来进行业务逻辑设计,以免带来不必要的损失。
如果不设置TTL,默认值是100年,从Hologres V1.3.24版本开始,TTL允许的最小值是一天(86400秒)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975