针对我的情况,我需要捕获设备的15个性能指标,并将其保存到InfluxDB中。每个设备都有一个唯一的设备ID。
指标以以下方式写入InfluxDB。这里只展示一个示例。
new Serie.Builder("perfmetric1")
.columns("time", "value", "id", "type")
.values(getTime(), getPerf1(), getId(), getType())
.build()
写入数据快速简便。但当我运行查询时,发现性能不佳。我正在尝试获取过去一小时内的15个指标数值。
select value from perfmetric1, perfmetric2, ..., permetric15
where id='testdeviceid' and time > now() - 1h
每个度量指标有120个数据点,一个小时内总共是1800个数据点。当空闲时,在c4.4xlarge EC2实例上查询大约需要5秒钟。
我相信InfluxDB可以做得更好。这是我的模式设计的问题还是其他什么问题?将查询分成15个并行调用是否会更快?