InfluxDb Flux 查询返回多个表时出乎意料的慢

问题描述 投票:0回答:1

我将从 InfluxDb 1.x 迁移到 InfluxDb 2.x。该应用程序显示了测量值的最小值、最大值和平均值的图表,因此我喜欢从一个查询中接收该信息。

我使用的查询基于 this 示例,如下所示:

data = from(bucket: "my-bucket")
  |> range(start: 2022-09-01T00:00:00Z, stop: 2022-09-10T00:00:00Z)
  |> filter(fn: (r) => r["_measurement"] == "temperature")

valueMin = data 
  |> aggregateWindow(every: 1d, fn: min, createEmpty: false)
  |> yield(name: "min")  

valueMax = data 
  |> aggregateWindow(every: 1d, fn: max, createEmpty: false)
  |> yield(name: "min")  

valueAvg = data 
  |> aggregateWindow(every: 1d, fn: mean, createEmpty: false)
  |> yield(name: "avg")  

当我对一个输出运行查询时,查询时间为 0.04 秒,但是当我添加另一个表时,查询时间增加到 13(!)秒。

以下查询运行 0.04 秒:

 data = from(bucket: "my-bucket")
  |> range(start: 2022-09-01T00:00:00Z, stop: 2022-09-10T00:00:00Z)
  |> filter(fn: (r) => r["_measurement"] == "temperature")

valueMin = data 
  |> aggregateWindow(every: 1d, fn: min, createEmpty: false)
  |> yield(name: "min")  

下一个查询需要 13 秒:

data = from(bucket: "my-bucket")
  |> range(start: 2022-09-01T00:00:00Z, stop: 2022-09-10T00:00:00Z)
  |> filter(fn: (r) => r["_measurement"] == "temperature")

valueMin = data 
  |> aggregateWindow(every: 1d, fn: min, createEmpty: false)
  |> yield(name: "min")  

valueMax = data 
  |> aggregateWindow(every: 1d, fn: max, createEmpty: false)
  |> yield(name: "min")  

这里出了什么问题/如何提高通量查询响应? 我目前使用的是 influxd 版本 2.6.1

influxdb flux
1个回答
0
投票

我遇到了同样的问题,你可以试试这个,这可能看起来很愚蠢,但它真的很快。

valueMin = from(bucket: "my-bucket")
  |> range(start: 2022-09-01T00:00:00Z, stop: 2022-09-10T00:00:00Z)
  |> filter(fn: (r) => r["_measurement"] == "temperature") 
  |> aggregateWindow(every: 1d, fn: min, createEmpty: false)
  |> yield(name: "min")  

valueMax = from(bucket: "my-bucket")
  |> range(start: 2022-09-01T00:00:00Z, stop: 2022-09-10T00:00:00Z)
  |> filter(fn: (r) => r["_measurement"] == "temperature") 
  |> aggregateWindow(every: 1d, fn: max, createEmpty: false)
  |> yield(name: "min")  

valueAvg = from(bucket: "my-bucket")
  |> range(start: 2022-09-01T00:00:00Z, stop: 2022-09-10T00:00:00Z)
  |> filter(fn: (r) => r["_measurement"] == "temperature") 
  |> aggregateWindow(every: 1d, fn: mean, createEmpty: false)
  |> yield(name: "avg")
© www.soinside.com 2019 - 2024. All rights reserved.