【发布时间】:2017-02-08 21:02:26
【问题描述】:
我有一个测量仪可以跟踪一堆机器的传感器读数。
每台机器大约有 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 可以做什么。
【问题讨论】:
-
你使用的是什么版本的 InfluxDB?
-
我是最新的,1.2。
-
你能在 InfluxDB 存储库上为此打开一个issue。
标签: influxdb