Neo4J:Java堆空间错误:100 k节点

时间:2014-03-24 23:36:31

标签: graph neo4j cypher py2neo

我有一个neo4j图表,其节点多于100,000个。当我在REST上使用以下cypher查询时,我得到一个Java堆错误。该查询正在从一组购买中生成一个2项目集。

MATCH (a)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN a.id,c.id

类型1(a,c)和类型2(b)的两种类型节点的叉积为80k * 20k

是否有针对相同目的的更优化的查询?我仍然是cypher的新手。 (我可以分别在所有Type1和Type2节点上有两个索引) 或者我应该去增加java堆大小。

我正在使用py2neo进行REST查询。

感谢。

1 个答案:

答案 0 :(得分:0)

正如你所说的十字产品是80k * 20k所以你可能会把它们全部拉过电线? 这可能不是你想要的。通常,此类查询受启动用户启动产品的约束。

您可以尝试在neo4j-shell中运行此查询:

MATCH (a:Type1)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN count(*)

如果节点上有标签,您可以使用该标签Type1吗?开车吧。 只是看看你看到了多少条路径。但80k乘20k是16亿路径。

我不确定您使用的版本(哪一个)的py2neo是否已经使用了流式传输?尝试使用py2neo的事务端点(即cypherSession.createTransaction()API)。