我有一个跟踪一堆机器传感器读数的度量。检索上一个值时的性能问题
每台机器有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。 – manecosta
你可以在InfluxDB回购上为此打开[issue](https://github.com/influxdata/influxdb/issues/new)。 –