项目场景:
InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
问题描述
使用influxdb做数据统计,运行一段时间之后,发现页面查询缓慢。
原因分析:
经查询发现数据存储量很大,在做聚合查询时缓慢会导致查询失败。
解决方案:
计划使用influxdb的连续查询功能,将需要聚合的数据定时聚合统计,查询数据时,直接查询聚合后的数据
官方文档:https://docs.influxdata.com/influxdb/v1.7/query_language/continuous_queries/
创建连续查询
CREATE CONTINUOUS QUERY <cq_name> ON <database_name> BEGIN
<cq_query> END
cq_query格式
SELECT <function[s]> INTO <destination_measurement> FROM
[WHERE ] GROUP BY time()[,<tag_key[s]>]
例:
CREATE CONTINUOUS QUERY active_week ON active BEGIN SELECT count(distinct(device_id)) INTO active.active_week_m FROM active.device_active GROUP BY time(1w) END
查询连续查询
SHOW CONTINUOUS QUERIES
删除连续查询
DROP CONTINUOUS QUERY <cq_name> ON <database_name>
连续查询一旦创建就不能修改,需要删除之后重新创建。
配置采样时间和频率
RESAMPLE EVERY :采样执行频次。如RESAMPLE EVERY 30m:表示30分钟执行一次。
RESAMPLE FOR :采样时间范围。如RESAMPLE FOR 60m:时间范围 = now() - for间隔(60m)。
RESAMPLE EVERY 30m FOR 60m:表示每30分钟执行一次60分钟内的数据计算。
CREATE CONTINUOUS QUERY “cq_advanced_every” ON “transportation”
RESAMPLE EVERY 30m
BEGIN
SELECT mean(“passengers”) INTO “average_passengers” FROM “bus_data” GROUP BY time(1h)
END
参考:https://www.cnblogs.com/quchunhui/p/13402808.html
本文介绍了在InfluxDB中遇到的查询性能问题,问题出现在数据量大时聚合查询变得缓慢。为了解决这个问题,文章提出使用InfluxDB的连续查询(Continuous Queries, CQ)功能进行定时数据聚合,从而提高查询速度。详细讲解了如何创建、查询和删除连续查询,并提供了配置采样时间和频率的方法,旨在帮助优化时序数据库的性能。"
120365922,8729712,银河麒麟V10离线安装Kubernetes集群,"['容器技术', 'Kubernetes', 'Docker', 'Linux系统管理', '集群部署']
1040

被折叠的 条评论
为什么被折叠?



