【问题标题】:Why is InfluxDB queries spanning an year taking forever (> 15 minutes) to respond?为什么跨越一年的 InfluxDB 查询需要永远(> 15 分钟)才能响应?
【发布时间】:2016-02-04 17:13:33
【问题描述】:

我正在使用 influxDB 保存具有以下架构的测量:

 {
        "timestamp": self.timestamp,
        "precision": "s",
        "name": "twitter.entity.count",
        "tags": {
            "entity": ent,
            "entity_type": ent_type
        },
        "fields": {
            "count": num
        }
    }

我的查询是

SELECT * FROM "twitter.entity.count" WHERE entity = 'someEntity' time > '2013-01-01' AND time < '2013-12-31'

当我尝试在 CLI 中查看架构时,它会将 entity 显示为字段而不是标记。这是为什么 ?为什么它会自动将我的标签转换为字段?如何将其转换回标签?

我认为查询很慢,因为字段没有被索引。所以我用时间字段尝试了以下查询,它仍然非常慢(> 10分钟)

SELECT * FROM "twitter.entity.count" WHERE time > '2013-01-01' AND time < '2013-12-31'

如何解决这个问题?我需要显着减少响应时间(最多 1 秒)

我运行这些查询的机器非常庞大。 (24 核,148GB 内存)

【问题讨论】:

  • 是否有链接/分析将预期查询性能描述为上述查询时间段的函数。
  • 你要显示多少数据?您是否真的要选择除除夕夜以外的所有内容(您选择了在那一天之前和之后的所有内容)?如果你想获取数万条记录,那么它很慢并不奇怪。另外,看看这个:groups.google.com/forum/#!msg/influxdb/a0-11i7Nyas/YfQKnjNsBQAJ
  • 首先我们必须澄清,我们的时间序列粒度是一天的数量级。所以在上面的查询中,我们只选择了 365 个点(一年中的每一天)。我们不希望这需要这么长时间
  • 首先我们必须澄清,我们的时间序列粒度是一天的数量级。所以在上面的查询中,我们只选择了 365 个点(一年中的每一天)。我们在数据库中也只有 27355 个系列,但检索 365 个点需要的不仅仅是大量涌入 -database 'demo' -execute 'SHOW SERIES' | wc -l 27355

标签: python-3.x influxdb


【解决方案1】:

原因是实体名称格式错误。实体名称中包含“\\”,无法添加为标签。所以它被添加为字段,导致查询时间变慢。

【讨论】:

  • 不推荐使用 JSON 写入协议,取而代之的是 line 协议,后者在语法上更加严格,此类问题更少。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 2018-02-13
  • 2017-04-21
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
相关资源
最近更新 更多