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

问下Hologres time_to_live_in_seconds 字段, 数据还是没有清呃?

问下Hologres time_to_live_in_seconds 字段, 我有个测试表 设置了5天, 现在10天了 数据还是没有清呃?

展开
收起
cuicuicuic 2023-12-03 20:20:29 37 0
3 条回答
写回答
取消 提交回答
  • 这个文档有描述 ttl 不是严格执行的,此回答整理自钉群“实时数仓Hologres交流群”

    2023-12-05 10:01:02
    赞同 展开评论 打赏
  • Hologres的time_to_live_in_seconds字段用于设置数据的生存时间,单位为秒。当数据的生存时间到达设定值时,该数据将被自动删除。

    在你的情况下,你设置了5天的生存时间,但10天后数据仍未被清除,可能有以下几种原因:

    1. 数据没有被正确写入到Hologres中。请检查你的数据写入代码是否正确,确保数据已经成功写入到Hologres表中。

    2. 数据在Hologres中的存储时间已经超过了5天。虽然你已经设置了time_to_live_in_seconds为5天,但如果数据在Hologres中的存储时间已经超过了这个值,那么数据将不会被自动删除。你可以使用以下SQL语句查看数据的生存时间:

      SELECT * FROM your_table_name WHERE expiration_time < NOW();
      

      如果返回的结果中包含你的数据,那么说明数据的生存时间已经超过了5天。你需要手动删除这些过期数据,或者调整time_to_live_in_seconds的值。

    3. Hologres的TTL功能没有正常工作。这可能是由于Hologres的配置问题或者硬件故障导致的。你可以尝试重启Hologres服务。

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

    Hologres的TTL(Time To Live)机制是基于数据写入和刷新操作的,而不是一个定时任务。当有新数据写入到表中时,系统会将超过TTL时间的数据标记为待删除状态,并在后续的Compaction操作中进行清理。因此,如果您的测试表在10天后仍然没有清空数据,可能是因为在这10天内并没有新的数据写入到该表中,或者Compaction操作还没有触发。

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

    2023-12-03 21:48:04
    赞同 展开评论 打赏

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

相关产品

  • 实时数仓 Hologres
  • 相关电子书

    更多
    实时数仓Workshop(广州站)- 李佳林 立即下载
    阿里云实时数仓Hologres技术揭秘2.0 立即下载
    实时数仓Hologres技术实战一本通2.0版(下) 立即下载