1

Influx 数据库名为“metrics”,具有两个保留策略,并在两个保留策略中指定一个作为默认值。

CREATE RETENTION POLICY basic ON "metrics" DURATION 2h  REPLICATION 1 SHARD DURATION 6m DEFAULT
CREATE RETENTION POLICY downsample ON "metrics" DURATION 60d  REPLICATION 1 SHARD DURATION 2h

每 10 分钟还有一堆连续查询运行,并对数据进行下采样以写入流入下采样保留策略层。基本保留策略层的可用条目每 2 小时清除一次,下采样保留策略在 60 天后清除。

连续查询示例如下所示

CREATE CONTINUOUS QUERY "cq_reads" ON "metrics" BEGIN SELECT sum(reads) as reads INTO downsample.stats_io FROM "metrics".basic.stats_io GROUP BY time(10m),* END

metrics是数据库名称,stats_io是这里的度量。

我的产品中允许流入的指定 GB 的内存限制。在某些时候,influx 开始无法扩展以保存 60 天的数据。

在达到内存限制后,我正在尝试清除基本保留策略中最旧的 10 分钟数据。相应的下采样最旧的 10 分钟数据仍然需要在下采样保留策略中可用。

以下命令将删除基本保留策略和下采样保留策略中的最后十分钟数据。

delete stats_io where time>1609457374835790623 and time < 1609457374835790623 + 10m

我不想删除下采样保留政策中可用的下采样数据。所以试图单独删除基本保留策略。

delete basic.stats_io where time>1609457374835790623 and time < 1609457374835790623 + 10m

不幸的是,此查询以错误告终,并且不允许根据保留策略进行删除。

ERR: error parsing query: found basic, expected FROM, WHERE at line 1, char 8

但是,选择查询适用于特定的保留策略。但是删除的工作方式不同。示例:选择查询

select count(*) from basic.stats_io // Properly get the count for the measurement with specified retention policy

我想知道为什么删除不支持基于保留策略的删除。是否存在任何其他方法或查询来单独清除默认保留策略数据?

任何建议都非常感谢。谢谢!

4

1 回答 1

0

我认为您需要使用语法delete FROM

delete FROM basic.stats_io where time>1609457374835790623 and time < 1609457374835790623 + 10m

DELETE 文档中的更多信息

于 2021-10-27T15:25:19.150 回答