Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 3.0.1分离删除挂起_Neo4j - Fatal编程技术网

Neo4j 3.0.1分离删除挂起

Neo4j 3.0.1分离删除挂起,neo4j,Neo4j,尝试为每月清除操作清除一种类型的节点。运行: MATCH (s:SeriesData) DETACH DELETE s 大约有900000个节点需要删除,每个节点只有一个关系。在Windows 10、Intel i7处理器、fast SSD和32GB RAM上运行本地DB。每个节点都很小,只有一个UID和一个float属性。 Neo4j消耗了超过90%的CPU,RAM缓慢增长到10GB以上。此状态保持不变超过20分钟,并且从未完成。没有给出错误。我假设这是一个bug,因为数据库可以处理数十亿个

尝试为每月清除操作清除一种类型的节点。运行:

MATCH (s:SeriesData) DETACH DELETE s
大约有900000个节点需要删除,每个节点只有一个关系。在Windows 10、Intel i7处理器、fast SSD和32GB RAM上运行本地DB。每个节点都很小,只有一个UID和一个float属性。 Neo4j消耗了超过90%的CPU,RAM缓慢增长到10GB以上。此状态保持不变超过20分钟,并且从未完成。没有给出错误。我假设这是一个bug,因为数据库可以处理数十亿个节点,所以删除900k应该是一项简单的任务


关于这个问题有什么想法吗。我知道我可以用一个LIMIT子句将它分解成块,但我更愿意保持代码的整洁。Neo4j是否具有用于删除的定期提交功能?

如果您使用的是Neo4j 3.0,请查看。有一个过程为您提供定期提交功能:

CALL apoc.periodic.commit("
    MATCH (s:SeriesData) 
    WITH s LIMIT {num} 
    DETACH DELETE s 
    RETURN count(*)", {num: 1000})

临时事务状态的内存不足

确保配置了足够的堆,您可以检查debug.log它实际使用了多少堆吗

对于1M节点+1M rels,大约4G-8G就足够了

您还可以通过运行以下命令来计算实际删除的数量:

MATCH (s:SeriesData)
RETURN sum(size((s)--()) + 1) as nodes_and_rels

我没有运行库,但我已经复制了这个功能,它工作了。性能低于预期,但确实完成了删除操作。我运行了10000次批量删除。我运行了这个查询,它返回了大约9000000条数据,对于900000条大约20字节长的记录和一个关系来说,这似乎太低了。