我将从 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
我遇到了同样的问题,你可以试试这个,这可能看起来很愚蠢,但它真的很快。
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")