「influxDB 原理与实践(三)」连续查询
时间:2022-07-24
本文章向大家介绍「influxDB 原理与实践(三)」连续查询,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
连续查询是InfluxDB的一种查询类型。它会按照用户指定的查询规则,自动地、周期地查询实时数据并执行指定运算,然后将查询结果保存在一张指定的表中。
通过创建连续查询,用户可以指定InfluxDB执行连续查询的时间间隔、单次查询的时间范围以及查询规则。InfluxDB会根据用户指定的规则,定期的将过去一段时间内的原始时序数据以用户所期望的方式保存至新的结果表中,从而降低存储数据的时间精度,大大减少新表的数据量。同时,将查询结果保存在指定的数据表中,也便于用户直接查询所关心的内容,从而降低查询的运算复杂度,提升查询效率。
基础特性
创建基础连续查询
- cq_name :该条连续查询的名字
- database_name:连续查询所在数据库的名字。
- cq_query:具体的连续查询语句。 其中,cq_query语法是InfluxQL协议格式的。
- function[s]:要查询的字段及数据处理的内置函数。
- destination_measurement:保存查询结果的目标表;若目标表不存在,InfluxDB自动创建。
- measurement连续查询语句所查询的目标表
- stuff具体的查询条件,可选参数
- interval连续查询语句执行的时间间隔与查询的时间范围。
- tag_key[s]归类的标签字段,可选参数
注意:InfluxDB在执行连续查询语句时,会根据time(interval) 的值自动生成查询时间范围。因此,用户在创建连续查询语句时,不需要在WHERE子句的查询条件中指定时间范围,且在WHERE条件中指定的时间范围都会被忽略掉
。 例:创建一条连续查询,按照指定时间间隔和标签对指定数据进行采样。
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子句分别指定更具体的时间间隔和时间范围。
管理连续查询
- 查询已创建的连续查询语句
show continuous queries
- 删除已存在的连续查询语句
drop continuous query <cq_name> on <database>
-修改已存在的连续查询语句 不支持,需先删除再创建
- 【Java学习笔记之三十】详解Java单例(Singleton)模式
- 基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案
- 浅析ASCII、Unicode和UTF-8三种常见字符编码
- 【Java学习笔记之三十一】详解Java8 lambda表达式
- 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】
- 【Code】关关的刷题日记21——Leetcode 485. Max Consecutive Ones
- 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】
- 【Java学习笔记之三十二】浅谈Java中throw与throws的用法及异常抛出处理机制剖析
- Linux上访问SQL Server数据库
- 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】
- 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
- 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别
- NET跨平台:在Ubuntu下搭建ASP.NET 5开发环境
- 【Code】关关的刷题日记22——Leetcode 53. Maximum Subarray
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android EasyBarrage实现轻量级弹幕效果
- android 获取本机其他app的版本信息的示例代码
- android相册选择图片的编码实现代码
- ClickHouse和他的朋友们(2)MySQL Protocol和Read调用栈
- Android图片三级缓存的原理及其实现
- Android TextView实现带链接文字事件监听的三种常用方式示例
- Android ViewDragHelper使用介绍
- Android语音声波控件 Android条形波控件
- Ubuntu下安装CUDA10.0以及问题
- Android ListView实现单选及多选等功能示例
- Recyclerview添加头布局和尾布局、item点击事件详解
- Android 中LayoutInflater.inflate()方法的介绍
- Android ListView实现简单列表功能
- Ubuntu16.04上安装CUDA9.0 详细教程
- Android使用LinearLayout设置边框