检索上一个值时的性能问题

时间:2017-02-08 21:02:27

标签: influxdb

我有一个测量记录,可以跟踪一堆机器的传感器读数。

每台机器有50个不同读数的订单,最多有1000台机器。我们每30秒读一次。

我存储读数的方式是单个测量,其中包含2个标签,machine_id和analysis_id以及单个值。

我的一个用例是检索机器列表的每个读数的当前值。

当这个数据库达到1亿条记录或类似的东西时,这些数字意味着不到1天,我不能再用查询检索最后的值,因为它花了太长时间。

我尝试了以下两种选择:

SELECT *
FROM analysisvalue
WHERE entity_id = '1' or entity_id = '2'
GROUP BY analysis_id, entity_id
ORDER BY time DESC
LIMIT 1

SELECT last(*) AS value,
FROM analysisvalue
WHERE entity_id = '1' or entity_id = '2'
GROUP BY analysis_id, entity_id

然后需要很长时间才能完成。 1亿美元,大约1秒。

检索最新值的用例非常频繁。我需要能够获得当前的"机器状态几乎立即。 我可以在应用逻辑方面做到这一点,通过在一个单独的地方跟踪最新值,但我想知道我可以单独使用InfluxDB做什么。

1 个答案:

答案 0 :(得分:0)

我面对类似的事情,并通过创建连续查询来解决这个问题。

https://docs.influxdata.com/influxdb/v0.8/api/continuous_queries/