我正在使用InfluxDB构建一个仪表板。我有一个生成大约的源。每分钟2000点。每个点有5个标签,6个字段。只有一个测量。
大约24小时一切正常但随着数据量的增长,我无法对涌入进行任何查询。例如,现在我有大约48小时的数据,甚至基本选择都会降低涌入数据库,
select count(field1) from measurementname
它超时错误:
ERR: Get http://localhost:8086/query?db=dbname&q=select+count%28field1%29+from+measuementname: EOF
我有一个仪表板和一个查询Influxdb的网络应用程序。 webapp允许用户根据tag1或tag2查询数据库。
标签:
答案 0 :(得分:4)
从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小时后内存不足,而查询只是最后一根,而不是低内存情况的实际原因。
在标签中使用唯一值是非常糟糕的做法。你仍然可以在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-ram