retention policy: 存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB 会定期清除过期的数据。
一、InfluxDB 数据保存策略 说明
InfluxDB的数据保留策略(RP) 用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。
一个数据库可以有多个保留策略,但每个策略必须是独一无二的。
二、InfluxDB 数据保留策略 目的
InfluxDB本身不提供数据的删除操作, 因此用来控制数据量的方式就是定义数据保留策略.
因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据, 从而更高效的处理数据.
三、InfluxDB 数据保留策略 操作
1.查询策略
可以通过如下语句查看数据库的现有策略:
> show retention policies on hyp1 name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 true
可以看到telegraf只有一个策略, 个字段的含义如下:
- name 名称, 此示例名称为default
- duration 持续时间, 0代表无限制
- shardGroupDuration shardGroup的存储时间, shardGroup是InfluxDB的一个基本存储结构, 应该大于这个时间的数据在查询效率上应该有所降低.
- replicaN 全称是REPLICATION, 副本个数
- default 是否是默认策略
2.新建策略
1 > CREATE RETENTION POLICY "2_hours" ON "hyp1" DURATION 2h REPLICATION 1 DEFAULT 2 > show retention policies on hyp1 3 name duration shardGroupDuration replicaN default 4 ---- -------- ------------------ -------- ------- 5 autogen 0s 168h0m0s 1 false 6 2_hours 2h0m0s 1h0m0s 1 true
通过上面的语句可以添加策略,本例在 telegraf 库添加了一个2小时的策略,名字叫做 2_hours, duration为2小时,副本为1,设置为默认策略。
因为名为default的策略不再是默认策略,因此,在查询使用default策略的表时要显式的加上策略名 “default”。
select * from "2_hours".weather #为啥我select后不显示
3.修改策略
> ALTER RETENTION POLICY "2_hours" ON "hyp1" DURATION 4h DEFAULT > show retention policies on hyp1 name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false 2_hours 4h0m0s 1h0m0s 1 true
4.删除策略
> drop retention POLICY "2_hours" ON "hyp1" > show retention policies on hyp1 name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false