Neo4j - 无法删除节点 - 获取 java.lang.OutOfMemoryError:Java 堆空间

Posted

技术标签:

【中文标题】Neo4j - 无法删除节点 - 获取 java.lang.OutOfMemoryError:Java 堆空间【英文标题】:Neo4j - Can't delete nodes - getting java.lang.OutOfMemoryError: Java heap space 【发布时间】:2015-07-17 01:28:56 【问题描述】:

我在数据库中有 24M 个节点,我想删除 2M。这 2M 个节点没有链接到任何其他节点。 以下是详细信息:

neo4j-sh (?)$ match (n:Description) return count (n);
+-----------+
| count (n) |
+-----------+
| 2151316   |
+-----------+
1 row
3474 ms
neo4j-sh (?)$ match (n:Description) delete (n);      
+-------------------+
| No data returned. |
+-------------------+
Nodes deleted: 2151316
9096 ms
Error occurred in server thread; nested exception is: 
    java.lang.OutOfMemoryError: Java heap space

系统有 16GB 内存。 在文件 neo4j-wrapper.conf 我有:

wrapper.java.initmemory=4096
wrapper.java.maxmemory=8192

在文件 neo4j-server.properties 我有:

neostore.nodestore.db.mapped_memory=512M
neostore.relationshipstore.db.mapped_memory=512M
neostore.propertystore.db.mapped_memory=512M
neostore.propertystore.db.strings.mapped_memory=512M
neostore.propertystore.db.arrays.mapped_memory=512M

我该如何解决这个问题,因为在这个级别的游戏中不能选择删除整个数据库?

【问题讨论】:

【参考方案1】:

您可以分批删除它们。

匹配(n:描述) n 限制为 100000 删除 n;

【讨论】:

以上是关于Neo4j - 无法删除节点 - 获取 java.lang.OutOfMemoryError:Java 堆空间的主要内容,如果未能解决你的问题,请参考以下文章

使用密码删除neo4j中的所有节点和关系超出堆空间

获取每个关系neo4j的路径长度

删除 neo4j 1.8 中的所有节点和关系

Neo4j怎么判断节点的属性的类型

如何在neo4j中获取所有连接的节点

Neo4j 密码查询以获取与特定其他节点没有关系的所有节点