gpt4 book ai didi

time-series - InfluxDB 性能

转载 作者:行者123 更新时间:2023-12-04 18:39:21 25 4
gpt4 key购买 nike

就我而言,我需要为设备捕获 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 个并行调用会更快吗?

最佳答案

正如@valentin 的回答所说,您需要为 InfluxDB 的 id 列构建一个索引,以有效地执行这些查询。

在 0.8 稳定版中,您可以使用 continuous fanout queries 执行此“索引”操作.例如,以下连续查询将扩展您的 perfmetric1系列变成多个系列的形式 perfmetric1.id :

select * from perfmetric1 into perfmetric1.[id];

稍后你会这样做:
select value from perfmetric1.testdeviceid, perfmetric2.testdeviceid, ..., permetric15.testdeviceid where time > now() - 1h

此查询将花费更少的时间来完成,因为 InfluxDB 不必执行时间序列的完整扫描来获取每个 testdeviceid 的点数。 .

关于time-series - InfluxDB 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29858328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com