1

我正在使用 TimescaleDB 并希望摆脱旧数据。

作为测试目的,我用一些不同的数据填充了一个空的 Hyptertable。

我使用 2 小时旧数据、10 小时旧数据和 15 小时旧数据运行以下语句:

select drop_chunks(interval '1 hours', 'my_table')

仅删除 15 小时前的数据。通过阅读 https://docs.timescale.com/v1.1/api#drop_chunks 我会假设所有数据都应该被删除。

4

2 回答 2

5

drop_chunks 只丢弃完整的块。如果你的 chunk_time_interval 设置为 12 小时,timescaledb 只会删除完整的 12 小时块。

于 2019-01-19T17:49:02.063 回答
2

让我澄清一下戴安娜的评论:每个块都由一个边界框定义;对于时间,您可以将这些视为start_timeend_time。如果您指定如下内容:

select drop_chunks(interval '1 hours', 'my_table')

这表示删除end_time超过 1 小时前的所有块。所以我从你上面的例子中的猜测是你的 15 小时数据在一个块中,但你的 2 小时和 10 小时数据在另一个块中,带有end_time > now() - 1 hour.

要查看块的时间范围和其他信息:

SELECT * FROM chunk_relation_size_pretty('my_table');

(经过审查,我可以看到文档在哪里有点不清楚;我已经更新了说明: https ://github.com/timescale/docs.timescale.com-content/pull/86 )

于 2019-01-19T20:44:23.550 回答