Cypher查询崩溃的小/中数据集

时间:2016-07-26 08:39:52

标签: java neo4j cypher

我已将100K节点导入Neo4J,现在我想检索这些节点的名称值。

我的节点有2个属性(idname)和1个标签(User)。 我在具有User标签和name属性的节点上创建了索引。

:schema
Indexes
  ON :User(name) ONLINE  

No constraints

我运行了这个密码查询:

MATCH (n:User)
RETURN n.name
LIMIT 1000

并在几毫秒内返回结果。

然后我尝试检索30000个节点,更改限制:

MATCH (n:User)
RETURN n.name
LIMIT 30000

每当我尝试执行此查询时页面崩溃。我尝试使用free -m每5秒检查一次内存使用情况。结果如下图所示。

enter image description here

我正在使用4GB内存,Ubuntu 14和i5 CPU的平庸机器,但要求30000个节点对我来说似乎不是一个大要求。

也许我正在以错误的方式调整我的机器。

在我的neo4j-wrapper.conf文件中,我有:

dbms.memory.heap.initial_size=2048
dbms.memory.heap.max_size=2048

在我的neo4j.conf中:

#dbms.memory.pagecache.size=2g    

1 个答案:

答案 0 :(得分:0)

如果您只想从浏览器获取JSON文档中的30K名称(甚至全部是100K),那么REST API可以在不使用浏览器内存不足的情况下执行此操作。

在浏览器中尝试此操作:

:POST /db/data/cypher {"query" : "MATCH (n:User) RETURN n.name LIMIT 30000"}

浏览器只显示部分结果,但您可以从结果面板右上角的下载图标下载JSON格式的结果。

要在更紧凑的JSON文档中获取所有名称,您可以改为:

:POST /db/data/cypher {"query" : "MATCH (n:User) RETURN COLLECT(n.name)"}