我正在使用 InfluxDB 构建仪表板。我有一个产生大约的来源。每分钟 2000 点。每个点有 5 个标签,6 个字段。只有一种测量。
一切正常大约 24 小时,但随着数据大小的增长,我无法对涌入运行任何查询。例如,现在我有大约 48 小时的数据,即使是基本的选择也会降低涌入数据库,
select count(field1) from measurementname
Run Code Online (Sandbox Code Playgroud)
它超时并出现错误:
ERR: Get http://localhost:8086/query?db=dbname&q=select+count%28field1%29+from+measuementname: EOF
Run Code Online (Sandbox Code Playgroud)
我有一个仪表板和一个查询 influxdb 的网络应用程序。webapp 允许用户基于 tag1 或 tag2 查询数据库。
标签:
粘贴来自 influxdb@googlegroups.com 邮件列表的答案:https ://groups.google.com/d/msgid/influxdb/b4fb503e-18a5-4bd5-84b1-632dc4950747%40googlegroups.com?utm_medium = email & utm_source = footer
tag1 - 每条记录唯一。
tag2 - 每条记录唯一。
这是一个糟糕的架构。您正在为每条记录创建一个新系列,这会给数据库带来沉重的负担。每个系列都必须编入索引,并且整个索引当前必须驻留在 RAM 中。我怀疑由于系列基数,您在 48 小时后内存不足,查询只是最后一根稻草,而不是低 RAM 情况的实际原因。
在标签中使用唯一值是非常糟糕的做法。您仍然可以在 WHERE 子句中使用字段,只是它们的性能没有那么好,而且对系统的损害远小于每个点都有一个唯一的系列。
https://docs.influxdata.com/influxdb/v0.10/concepts/schema_and_data_layout/ https://docs.influxdata.com/influxdb/v0.10/guides/hardware_sizing/#when-do-i-need-more -内存
| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |