influxDB 原理与实践

「influxDB 原理与实践(三)」连续查询

2020-06-26  本文已影响0人  源码之路

连续查询是InfluxDB的一种查询类型。它会按照用户指定的查询规则,自动地、周期地查询实时数据并执行指定运算,然后将查询结果保存在一张指定的表中。

通过创建连续查询,用户可以指定InfluxDB执行连续查询的时间间隔、单次查询的时间范围以及查询规则。InfluxDB会根据用户指定的规则,定期的将过去一段时间内的原始时序数据以用户所期望的方式保存至新的结果表中,从而降低存储数据的时间精度,大大减少新表的数据量。同时,将查询结果保存在指定的数据表中,也便于用户直接查询所关心的内容,从而降低查询的运算复杂度,提升查询效率。


基础特性

创建基础连续查询

create continuous query my_first_basic_cq on cq_test_db
begin 
  select max(cpu_usage)  into basic_cq_result from cpu_usage_detail group by time(1h) ,ip
end

解释:每小时定期去查cpu_usage_detail表,按服务器ip聚合,统计过去1小时内每个IP的最大CPU利用率cpu_usage,并将结果保存在表basic_cq_result中。

连续查询的执行时间及查询时间范围

group by time()指定的时间既决定了连续查询每次执行的时间间隔,也决定了连续查询的查询时间范围。基于本地服务器的时间,在预设的时间节点开始执行这些连续查询。influxDB会在每个小时开始的时候执行连续查询语句,如11:00,12:00,13:00
infulxDB首先通过now()函数获取当前时间,再用当前时间减去group by time()指定的时间间隔。这两个时间点之间的左闭合开区间就是连续查询语句查询时间范围。例如,时间长度是1小时,执行时间点是12:00,那么所查时间范围就是11:00~11:59.9999999。

高级特性

创建高级连续查询

高级连续查询语法:



用户通过RESAMPLE子句分别指定更具体的时间间隔和时间范围。



管理连续查询

上一篇 下一篇

猜你喜欢

热点阅读