【问题标题】:How do I delete records older than 90 days in QuestDB如何删除 QuestDB 中超过 90 天的记录
【发布时间】:2025-12-11 08:05:02
【问题描述】:

我正在将来自多个来源的 IoT 传感器数据流存储到 QuestDb 中的几个表中,由于数据量巨大,我只想保留过去 90 天的数据。我可以在他们的文档中看到一些删除方法,但我不想truncate 表,因为我会丢失最新记录。有什么方法可以代替备份和截断表来删除超过 90 天的数据?

【问题讨论】:

    标签: questdb


    【解决方案1】:

    这里的策略应该是创建一个已分区的表,然后根据相对于现在的时间值删除分区。该表还必须具有指定的时间戳。此示例将执行该操作:

    CREATE TABLE my_table (timestamp TIMESTAMP, x STRING) timestamp(timestamp) PARTITION BY DAY;
    

    在您的情况下,您想要删除超过 90 天的分区,您可以使用 ALTER TABLE DROP PARTITION 来完成此操作

    ALTER TABLE my_table DROP PARTITION
    WHERE timestamp < dateadd('d', -90, now())
    

    知道您还可以按MONTHYEAR 进行分区可能会很有用。

    当心这是破坏性的,QuestDB 无法恢复以这种方式删除的数据,请确保您有适当的备份方法或确定您不需要这些数据不再。 在ALTER TABLE DROP PARTITION 参考页面上有更多详细信息。

    编辑: 现在在Data retention 页面上有专门的文档

    【讨论】:

      最近更新 更多