开发者社区> 问答> 正文

Polardb-X中的TTL表功能对过期分区的删除问题

问题描述

当分区间隔为一个月时;

  1. TTL功能描述说 2023-3-5的数据会存储在20230401分区中,当定时任务删除过期分区时并不会将20230401分区删除,会保留上个月的数据。

期望结果

  1. 是这样嘛???
  2. 在现有功能中,可以将20230401的分区也作为过期分区删除掉吗??

已尝试的方法

暂未找到可解决的方法

展开
收起
rr2wphg2fahlw 2023-03-08 09:48:48 123 0
3 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    根据您提供的描述,当前的TTL功能是将2023-03-05这样的数据存储在20230401分区中,并且保留上个月的数据。也就是说,在2023-04-01这一天到来之前,20230401分区中的数据都不会被删除,而是会被保留。

    如果您想要将20230401分区也作为过期分区删除掉,可以考虑对定时任务进行调整。具体来说,您可以修改定时任务的逻辑,使其在删除过期分区时也能够删除20230401分区。不过需要注意的是,这可能会导致您无法再访问该分区中的数据,请谨慎操作。

    另外,建议您在实际操作之前先进行备份,以免误操作导致数据丢失。

    2023-03-19 01:00:08
    赞同 展开评论 打赏
  • 首先,你的说法1不对,不是保留上一个月数据,是分区的过期时间点是20230401,哪些分区失效是创建TTL任务时设定的,不会出现该失效的数据还自动跑到不该失效的分区里去,所有你的1的问题描述是不对的。

    另外,想要手动删除过期分区也是有语法的,可以参考:https://help.aliyun.com/document_detail/403530.html

    删除过期的物理时间分区

    此命令多次调用不会无限制删除已有分区,只会删除过期分区。

    • 可以指定物理时间分区名,可通过information_schema.local_partitions获取
    ALTER TABLE t_order EXPIRE LOCAL PARTITION p20210401;
    • 不指定分区名时,删除所有已过期的分区
    ALTER TABLE t_order EXPIRE LOCAL PARTITION;

    此外,TTL的功能是帮助你自动清理掉你设定的过期的分区,没有过期的分区是不会删除的,如果你想要删除某一个分区的数据,可以直接使用drop partition的语法,而不是TTL功能。

    删除分区请见:https://help.aliyun.com/document_detail/316600.html

    删除分区

    对于对Range/List分区策略的分区组,支持删除分区。

    ALTER TABLEGROUP tg_name DROP PARTITION partition_name [,partition_name] ...

    2023-03-08 21:18:17
    赞同 展开评论 打赏
  • 阿里云文档团队

    定时任务可以自己创建的吧 https://help.aliyun.com/document_detail/403531.html

    2023-03-08 10:40:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载