Neo4j删除图形时出现内存不足错误

4
我正在使用Neo4j在一台拥有16G内存的Linux机器上,并且尝试删除整个图形。该图形包含11353056个关系和19900个节点。当我运行Match (n) detach delete n时,加载了一段时间后会出现内存不足的错误。
我该如何删除这个图形呢?我应该先删除关系,然后再删除节点以避免这个问题吗?
4个回答

6

按照以下步骤进行,以删除有限制的记录:

MATCH (n)
WITH n LIMIT 10000
DETACH DELETE n
RETURN count(*);

如果您想删除所有类似的属性键,请停止neo4j服务并从data/graph.db中删除所有内容。


1

不必使用Cypher来删除整个图形,你可以停止Neo4j并删除data/graph.db文件夹。然后重新启动Neo4j。

另一个建议是运行带有限制的删除查询,并重复执行,直到没有更多记录存在。

例如:

Match (n) detach delete n limit 5000

由于我正在进行性能比较,删除graph.db并不是最好的选择。所以你的意思是说最好是在完成之前删除部分内容,而不是先删除关系再删除节点? - Muna arr
我认为是这样的。因为根据你的图形关系数量,你可能会在仅删除这些关系时出现内存不足的情况。对吧? - Bruno Peres
是的,这个图大约有1100万个关系。 - Muna arr

0

你可以使用LIMIT在多个步骤上删除图表

例如

MATCH (n) with n limit 100 DETACH DELETE n 

这个答案并不比现有的答案更好。 - nimrod serok

0
安装APOC插件并使用此APOC命令;它将按照您设置的“batchSize”进行分批删除。
CALL apoc.periodic.iterate('MATCH (n) RETURN n', 'DETACH DELETE n', {batchSize:1000})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接