目录
保留策略RP
连续查询: CQ (Continuous Query )
1)新建连续查询
2)显示所有已存在的连续查询
3)删除Continuous Queries
保留策略RP
一、InfluxDB 数据保留策略说明
InfluxDB的数据保留策略(RP) 用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。
一个数据库可以有多个保留策略,但每个策略必须是独一无二的。
二、InfluxDB 数据保留策略 目的
InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。
因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据,从而更高效的处理数据。
三、InfluxDB 数据保留策略 操作
1)查询策略
可以通过如下语句查看数据库的现有策略:
show retention policies on measurement
可以看到,telegraf只有一个策略,各字段的含义如下:
name--名称,此示例名称为 default
duration--持续时间,0代表无限制
shardGroupDuration--shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
replicaN--全称是REPLICATION,副本个数
default--是否是默认策略
保留策略: RP(retention policy)
此处注意此处的语句要大写
即数据的过期策略:CREATE RETENTION POLICY "a_year" ON "mytest" DURATION 52w REPLICATION 1 DEFAULT
这个语句对数据库 mytest 创建了一个叫做 a_year 的RP, a_year 保存数据的周期是52周 ,副本个数为1
连续查询: CQ (Continuous Query )
InfluxDB每秒可以处理数十万的数据点。如果要长时间地存储大量的数据,对于存储会是很大的压力。
一个很自然的方式就是对数据进行采样,对于高精度的裸数据存储较短的时间,而对于低精度的的数据可以保存得久一些甚至永久保存。
所以InfluxDB提供了两个特性——连续查询(Continuous Queries简称CQ)和保留策略(Retention Policies简称RP),分别用来处理数据采样和管理老数据的。
1)新建连续查询
是在数据库内部自动周期性跑着的一个InfluxQL的查询,CQ需要在SELECT语句中使用一个函数,并且一定包括一个 GROUP BY time
CREATE CONTINUOUS QUERY cq_3m ON earthsite
BEGIN
SELECT mean(value)
INTO mem_used_3m
FROM cpu_times_percent
GROUP BY time(3m)
END
CREATE CONTINUOUS QUERY cp_3m ON earthsite BEGIN SELECT mean(value) INTO mem_value_3m FROM cpu_times_percent GROUP BY time(3m) END
示例在earthsite库中新建了一个名为 cq_3m 的连续查询,
每三分钟取从表cpu_times_percent取出value字段的平均值,
加入到 mem_used_3m 表中。
使用的数据保留策略都是 default。
2)显示所有已存在的连续查询
SHOW CONTINUOUS QUERIES
3)删除Continuous Queries
删除连续查询的语句如下:
DROP CONTINUOUS QUERY <cq_name> ON <database_name>
四、其他说明
在InfluxDB中,将连续查询与数据存储策略一起使用会达到最好的效果。
比如,将精度高的表的存储策略定为一个周,然后将精度底的表存储策略定的时间久一点,这要就可以实现高低搭配,以满足不同的工作需要。