概念
InfluxDB的数据保留策略(RP) 用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据,一个数据库可以有多个保留策略,但每个策略必须是独一无二的。
目的
InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。
因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据,从而更高效的处理数据。
操作
- 查询策略
- name–名称,此示例名称为 autogen
- duration–持续时间,0代表无限制
- shardGroupDuration–shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
- replicaN–全称是REPLICATION,副本个数
- default–是否是默认策略
> SHOW RETENTION POLICIES ON mydb
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
>
- 新建策略
在 mydb库添加了一个24小时的策略,名字叫做 def_new , duration为24小时,副本为1
> CREATE RETENTION POLICY "def_new" ON mydb DURATION 24h REPLICATION 1
> show RETENTION POLICIES ON mydb
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
def_new 24h0m0s 1h0m0s 1 false
>
若要直接定义为默认加上关键字DEFAULT
- 修改策略
> ALTER RETENTION POLICY def_new ON mydb DURATION 48h DEFAULT
> SHOW RETENTION POLICIES ON mydb
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
def_new 48h0m0s 1h0m0s 1 true
>
- 删除策略
> drop retention POLICY def_new ON mydb
> show retention policies on mydb
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
> alter retention policy autogen on mydb default
> show retention policies on mydb
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
>
当一个表使用的策略不是默认策略时,在进行操作时一定要显式的指定策略名称,否则会出现错误。