开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

问下Hologres这个具体删除的时间就只能随缘了是吗 ?

问下Hologres这个 ttl 是 插入表的某几条数据达到ttl时间后删除, 还是 ttl个时间后直接把整张表数据删除?
那这个具体删除的时间就只能随缘了是吗 ?

展开
收起
真的很搞笑 2023-12-03 20:20:29 63 0
3 条回答
写回答
取消 提交回答
  • 按数据写入/更新的数据算,不是整表.根据数据的compaction来决定的。一般不建议用ttl 控制数据删除时间。如果是分区表,就用动态分区,如果是非分区表,写个定时任务删除也行,此回答整理自钉群“实时数仓Hologres交流群”

    2023-12-05 10:06:51
    赞同 展开评论 打赏
  • Hologres的TTL功能并不是精确地在某个时间点删除数据,而是当表中的数据超过设置的TTL时间后,系统会在某一个时间自动删除这些数据。这意味着,不能精确地控制数据的删除时间,因此业务逻辑不应强依赖TTL,以免带来不必要的损失。从V1.3.24版本开始,Hologres允许设置的TTL的最小值为一天(即86400秒)。如果不设置TTL,默认值会是100年。

    关于具体的删除过程,当DELETE操作执行时,老数据会被做标记,新数据会Flush成新的小文件。随后,后台会将这些小文件进行Compaction,该过程中就会将老数据清理掉,并合并新数据。

    因此,在使用TTL功能时,需要仔细考虑业务需求和数据安全性,以确保数据不会被错误或过早地删除。

    2023-12-04 16:32:24
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在Hologres中,TTL(Time To Live)是一种设置表数据过期时间的方式。当表中的某些数据达到设置的TTL时间后,这些数据并不会被直接删除,而是会被标记为待删除状态。随后,在新数据的写入和刷新过程中,这些被标记的数据会被清理掉,并合并到新的小文件中。后台会将这些小文件进行Compaction操作,在这个过程中,老数据会被清理掉,新数据则会被保留并合并。

    需要特别注意的是,TTL并不是一个精确的时间点,而是一个时间段。也就是说,当数据超过设置的TTL时间后,系统会在某一个时间自动删除这些数据。这个“某一个时间”并不是固定的,因此不能强依赖TTL来进行业务逻辑设计,以免带来不必要的损失。

    如果不设置TTL,默认值是100年,从Hologres V1.3.24版本开始,TTL允许的最小值是一天(86400秒)。

    2023-12-03 21:46:41
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载