我正在使用 TimescaleDB 并希望摆脱旧数据。
作为测试目的,我用一些不同的数据填充了一个空的 Hyptertable。
我使用 2 小时旧数据、10 小时旧数据和 15 小时旧数据运行以下语句:
select drop_chunks(interval '1 hours', 'my_table')
仅删除 15 小时前的数据。通过阅读 https://docs.timescale.com/v1.1/api#drop_chunks 我会假设所有数据都应该被删除。
我正在使用 TimescaleDB 并希望摆脱旧数据。
作为测试目的,我用一些不同的数据填充了一个空的 Hyptertable。
我使用 2 小时旧数据、10 小时旧数据和 15 小时旧数据运行以下语句:
select drop_chunks(interval '1 hours', 'my_table')
仅删除 15 小时前的数据。通过阅读 https://docs.timescale.com/v1.1/api#drop_chunks 我会假设所有数据都应该被删除。
drop_chunks 只丢弃完整的块。如果你的 chunk_time_interval 设置为 12 小时,timescaledb 只会删除完整的 12 小时块。
让我澄清一下戴安娜的评论:每个块都由一个边界框定义;对于时间,您可以将这些视为start_time
和end_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 )