尝试返回符合特定描述的节点数时出现Neo4j内存不足错误

尝试返回符合特定描述的节点数时出现Neo4j内存不足错误,neo4j,Neo4j,关注的问题是: MATCH (node:Wallet) WHERE size((node)-[:SendTo]-()-[:SendTo]-())>0 or size(()-[:SendTo]-(node)-[:SendTo]-())>0 RETURN count(node) 数据库的大小为12.5 GB。钱包节点数量超过100000个 我尝试使用java在Eclipse上运行查询,VM参数为-Xmx28000m-xms2800m-Xss9m 我还在neo4j.conf中设置了相应的

关注的问题是:

MATCH (node:Wallet)
WHERE size((node)-[:SendTo]-()-[:SendTo]-())>0 or size(()-[:SendTo]-(node)-[:SendTo]-())>0
RETURN count(node)
数据库的大小为12.5 GB。钱包节点数量超过100000个

我尝试使用java在Eclipse上运行查询,VM参数为-Xmx28000m-xms2800m-Xss9m 我还在neo4j.conf中设置了相应的行:

dbms.memory.heap.initial_size=28000m
dbms.memory.heap.max_size=28000m
dbms.jvm.additional=-Xss4m

不久之后,它将给出内存不足的错误。任务管理器显示相应的程序使用了大约28GB的内存。它是一台64位计算机,内存为32 GB


有什么办法吗?

您可以稍微改进一下谓词。在其中一种情况下,我们可以使用不需要扩展的关系存储,而在另一种情况下,我们可以使用exists函数

试试这个

MATCH (node:Wallet)
WHERE size((node)-[:SendTo]-()) >= 2 or exists((node)-[:SendTo*2]-())
RETURN count(node)