关注的问题是:
MATCH (node:Wallet)
WHERE size((node)-[:SendTo]-()-[:SendTo]-())>0 or size(()-[:SendTo]-(node)-[:SendTo]-())>0
RETURN count(node)
数据库的大小为12.5 GB。电子钱包节点的数量超过100000.
我尝试使用Java over Eclipse运行查询,其中VM参数为-Xmx28000m -Xms28000m -Xss9m
(我也在neo4j.conf中设置了相应的行:
dbms.memory.heap.initial_size=28000m
dbms.memory.heap.max_size=28000m
dbms.jvm.additional=-Xss4m
)
之后不久就会出现内存不足的错误。任务管理器显示相应的程序使用大约28 GB。 (它是一台64位计算机,内存为32 GB。)
周围有什么办法吗?
答案 0 :(得分:1)
您可以稍微改进一下谓词。在其中一种情况下,我们可以使用关系存储(它不需要扩展),在另一种情况下我们可以使用exists()函数。
试试这个。
MATCH (node:Wallet)
WHERE size((node)-[:SendTo]-()) >= 2 or exists((node)-[:SendTo*2]-())
RETURN count(node)