2017-02-08 17 views
0

我有一个跟踪一堆机器传感器读数的度量。检索上一个值时的性能问题

每台机器有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单独做什么。

+0

什么版本的InfluxDB你在? –

+0

我是最新的,1.2。 – manecosta

+0

你可以在InfluxDB回购上为此打开[issue](https://github.com/influxdata/influxdb/issues/new)。 –

回答