首页 > 解决方案 > Influxdb 使用 group by 加速长时间的查询

问题描述

我每秒将传感器数据写入 influxdb 数据库。在 grafana 中显示每周、每月或每年的摘要非常慢,因为它需要查询数千个值。

为了加快速度,我正在考虑使用cron作业来运行类似的查询

select mean(sensor1) into data_avg_1h from data where time > start and time <= end group by time(1h)

select mean(sensor1) into data_avg_1d from data where time > start and time <= end group by time(1d)

select mean(sensor1) into data_avg_1w from data where time > start and time <= end group by time(1w)

这意味着我需要更多存储空间,但查询运行得更快。

这是一个很好的工作还是可以接受的,有没有更聪明的方法来做这样的事情?

标签: influxdb

解决方案


是的。完全没问题,还建议像您在问题中提到的那样对数据进行下采样。

但是,与其使用 cronjob,不如使用 InfluxDB 的连续查询功能来实现相同的结果。

下采样连续查询文档。

请注意,在存储短期平均值时,如果您想从该下采样数据中计算较长时期的平均值,则必须计算加权平均值。否则,您将计算平均值,该平均值可能不等于从原始数据计算的平均值。

这是因为,每个下采样的平均值可能具有不同数量的数据点。

因此,在计算定期间隔的平均值时,存储在该间隔内接收到的数据点的数量。这样,您将能够计算加权平均值。


推荐阅读