文章目录
- 1、InfluxDB 保存策略说明
- 2、InfluxDB 保存策略目的
- 3、InfluxDB 数据保存策略操作
InfluxDB每秒可以处理成千上万条数据,要将这些数据全部保存下来会占用大量的存储空间,有时我们可能并不需要将所有历史数据进行存储,因此,InfluxDB推出了数据保留策略(Retention Policies),用来让我们自定义数据的保留时间。
每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久.
1、InfluxDB 保存策略说明
InfluxDB的数据保留策略(RP) 用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。
一个数据库可以有多个保留策略,但每个策略必须是独一无二的。
2、InfluxDB 保存策略目的
InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。
因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据,从而更高效的处理数据。
3、InfluxDB 数据保存策略操作
查询策略
show retention policies on disk_free
可以看到,test 只有一个策略,各字段的含义如下:
name:名称,此示例名称为 autogen
duration:持续时间,0s代表无限制
shardGroupDuration:shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
Shard 在 influxdb中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。
这样做的目的就是为了可以通过时间来快速定位到要查询数据的相关资源,加速查询的过程,并且也让之后的批量删除数据的操作变得非常简单且高效。
replicaN:全称是REPLICATION,副本个数
default:是否是默认策略
新建策略
create retention policy "2_hours" on "test" duration 2h replication 1 default
show retention policies on test
通过上面的语句可以添加策略,本例在 test 库添加了一个2小时的策略,名字叫做 2_hours, duration为2小时,副本为1,设置为默认策略。
因为名为default的策略不再是默认策略,因此,在查询使用default策略的表时要显式的加上策略名 “default”。
修改策略
alter retention policy "2_hours" on "test" duration 4h default
show retention policies on test
可以看到,修改后的策略发生了变化。
删除策略
drop retention policy "2_hours" on "test"
show retention policies on test
可以看到,名为2_hours的策略已经被删除了。
当一个表使用的策略不是默认策略时,在进行操作时一定要显式的指定策略名称,否则会出现错误。