【发布时间】:2025-12-11 08:05:02
【问题描述】:
我正在将来自多个来源的 IoT 传感器数据流存储到 QuestDb 中的几个表中,由于数据量巨大,我只想保留过去 90 天的数据。我可以在他们的文档中看到一些删除方法,但我不想truncate 表,因为我会丢失最新记录。有什么方法可以代替备份和截断表来删除超过 90 天的数据?
【问题讨论】:
标签: questdb
我正在将来自多个来源的 IoT 传感器数据流存储到 QuestDb 中的几个表中,由于数据量巨大,我只想保留过去 90 天的数据。我可以在他们的文档中看到一些删除方法,但我不想truncate 表,因为我会丢失最新记录。有什么方法可以代替备份和截断表来删除超过 90 天的数据?
【问题讨论】:
标签: questdb
这里的策略应该是创建一个已分区的表,然后根据相对于现在的时间值删除分区。该表还必须具有指定的时间戳。此示例将执行该操作:
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())
知道您还可以按MONTH 或YEAR 进行分区可能会很有用。
当心这是破坏性的,QuestDB 无法恢复以这种方式删除的数据,请确保您有适当的备份方法或确定您不需要这些数据不再。 在ALTER TABLE DROP PARTITION 参考页面上有更多详细信息。
编辑: 现在在Data retention 页面上有专门的文档
【讨论】: