这两行有什么区别?
call apoc.periodic.iterate("MATCH (n:Nodes) return n", "DETACH DELETE n", {batchSize:10000, iterateList:true})"
call apoc.periodic.commit("match (n:Nodes) limit {limit} detach delete n RETURN count(*)",{limit:10000})
Run Code Online (Sandbox Code Playgroud)
删除大量节点的最佳方法是什么?
该过程apoc.periodic.iterate
需要两个查询:
因此,在您的示例中,匹配Node
数据库的所有数据库,然后以10000的批处理大小删除它们。
该过程apoc.periodic.commit
仅接受一个查询,并且该过程将一次又一次地执行查询……将其结果设为0。
因此,在您的示例中,您将前10000个节点删除。您重复此行为,直到Node
数据库中没有更多。
要恢复,两个查询都给出相同的结果,但是方式不同。这样apoc.periodic.iterate
做将比apoc.periodic.commit
(首先需要建立节点集)过程占用更多的RAM ,但是这样做的好处是您可以通过配置使用所有的CPU parallel:true
(但要小心锁)。
如果您要删除的节点数量非常多,建议您使用apoc.periodic.commit
。
归档时间: |
|
查看次数: |
1475 次 |
最近记录: |